Laravel with 多表查询条件筛选

例如以下表:

  • 菜品表: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();
全部评论

相关推荐

01-15 13:45
门头沟学院 Java
牛客92772631...:boss招聘挂岗位是要花钱的,花了钱不挂白不挂,别那么焦虑,但是也要做好跳槽的准备
找实习记录
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务