[英]Eloquent With Nested Where Clauses
我很好奇是否有辦法使用 Eloquent 的查詢構建器來嵌套 where 子句,或者我是否應該只運行原始數據庫查詢。
這是原始查詢:
SELECT * FROM `inventory` WHERE (`sold_date` > '2020-12-31' OR `sold_date` IS NULL) AND (`removed_date` > '2020-12-31' OR `removed_date` IS NULL) AND `category` <> 1 AND `purchased_date` <= '2020-12-31'
是的,您可以將帶有條件的數組傳遞給 Eloquent 的where()
並有多個where()
。
有關如何構建查詢的信息,請參閱此答案(包括評論): https://stackoverflow.com/a/27522556/4517964
你可以試試這個
Inventory ::where(function($query) use ($d1){
$query->where('solid_date','=',$d1)
->orWhereNull('solid_date');
})->where(function($query2) use ($da1){
$query2->where('removed_date','=',$da1)
->orWhereNull('removed_date');
})->where(function($query3) use (){
$query2->where('category','<>',1)
->where('purchased_date','=','2020-12-31');
}}->get();
我更喜歡在少數函數中使用參數可能是您需要它,否則您可以像我在上一個 function 中那樣對其進行硬編碼
在 Laravel Eloquent 中,您可以使用以下查詢:
$inventory = Inventory::where(function($query) {
$query->where('sold_date', '>', '2020-12-31')->orWhereNull('sold_date');
})->where(function($query) {
$query->where('removed_date', '>', '2020-12-31')->orWhereNull('removed_date');
})->where('category', '<>', 1)->where('purchased_date', '<=', '2020-12-31')
->order('id', 'DESC')
->get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.