2 回答

TA貢獻1725條經驗 獲得超8個贊
你已經非常接近了,但是當你需要在括號之間有條件時,你的 where() 函數應該是一個回調。
例如(product.title like '%$keyword%' OR product.content like '%$keyword%' OR product.price like '%$keyword%' OR product.quantity like '%$keyword%') 將是
$query->where(function($subquery) use($keyword) {
$subquery->where('title', 'like', "%{$keyword}%")
->orWhere('content', 'like', "%{$keyword}%");
});
這只是您的要求的一個粗略示例,但您應該得到它。
正如您所知,您可以組合幾乎所有 Eloquent 功能。
祝你好運!

TA貢獻1836條經驗 獲得超4個贊
您可以在方法內部傳遞一個閉包where
。閉包將接收一個查詢生成器實例,您可以使用它來設置應包含在括號內的約束。
這被稱為parameter grouping
。
https://laravel.com/docs/7.x/queries#parameter-grouping
將您的聲明更改為此。
$data = DB::table('product')
->select('product.id','product.title','product.description','product.content','product.photo','product.quantity','product.price')
->join('product_per_category','product_per_category.product_id','=','product.id')
->where(['product.deleted' => 0])
->where(['product_per_category.deleted' => 0])
->where(['product_per_category.productcategory_id' => $id])
->where(function($query) use($keyword){
$query->where('product.content', 'like', '%' . $keyword . '%')
->orWhere('product.title', 'like', '%' . $keyword . '%')
->orWhere('product.quantity', 'like', '%' . $keyword . '%')
->orWhere('product.price', 'like', '%' . $keyword . '%');
})
->groupBy('product.id')
->get();
- 2 回答
- 0 關注
- 165 瀏覽
添加回答
舉報