例如以下表:
- 菜品表:
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();