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