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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM