例如以下表:
字段 | 说明 |
id | 主键 |
title | 菜品名称 |
..... | 省略 |
字段 | 说明 |
id | 主键 |
title | 规格名称 |
foods_id | 菜品表ID |
price | 价格 |
..... | 省略 |
class FoodsModel extends Model
{
// 省略
/**
* 规格
* @return HasMany
*/
public function specs()
{
return $this->hasMany(\App\Model\FoodsSpecsModel::class, 'foods_id', 'id');
}
// 省略
}
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();