Laravel with 多表查询条件筛选(按从表查询)

14 篇文章 0 订阅

例如以下表:

  • 菜品表: foods
字段说明
id主键
title菜品名称
  • 菜品规格表: foods_specs
字段说明
id主键
title规格名称
foods_id菜品表ID
price价格
  • 菜品模型: FoodsModel
class FoodsModel extends Model
{
  
     // 省略
     /**
     * 规格
     * @return HasMany
     */
    public function specs()
    {
        return $this->hasMany(\App\Model\FoodsSpecsModel::class, 'foods_id', 'id');
    }
 
   // 省略
}

菜品规格模型: FoodsSpecsModel

class FoodsSpecsModel extends Model
{
    protected $table = 'foods_specs';
 
    protected function foods()
    {
        return $this->belongsTo('App\Model\FoodsModel', 'foods_id', 'id');
    }
}

根据菜品价格区间查询筛选菜品:

FoodsModel::with(['specs' => function($query){
            $query->select(['title', 'price']);
        }])
        ->whereHas('specs', function ($query) use ($params){
            // price_from,price_end对应价格区间, 可选参数
            if (isset($params['price_from']) && isset($params['price_end'])){
                $query->whereBetween('price', [$params['price_from'], $params['price_end']]);
            }
        })->select('title')->get();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值