我想從“用戶”表中獲取“plan_validity”為空或超過今天日期的計數。兩個條件都需要檢查 user_id 和 status = 1 的同一列。
$currentUser = DB::table('users')->where('user_id', $card_details->user_id)->where('status', 1)->whereDate('plan_validity', '>=', Carbon::now())->orWhere('plan_validity', null)->count();
上面提到的查詢,它不是選擇發送到查詢的特定 user_id,而是選擇所有 user_id。
如何修改上述查詢?
這是我為上述查詢獲得的輸出 在此處輸入影像描述
這是我需要得到的輸出
在此處輸入圖片說明
uj5u.com熱心網友回復:
您沒有正確組合“where”子句。使用末尾的“orWhere”,它本質上忽略了前面 where 子句的所有條件(即它與哪個用戶相關),因此將 plan_validity 為 null 的任何行添加到結果中。因此,在按用戶 ID 和狀態查詢之后,您需要將查詢的其余部分組合成一個邏輯組,如下所示:
$user = Users::where('user_id', $card_details->user_id)
->where('status', 1)
->where(function (Builder $query) {
return $query
->whereDate('plan_validity', '>=', Carbon::now())
->orWhere('plan_validity', null);
})
->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/363689.html
標籤:mysql sql sql-server laravel-8 laravel 查询构建器
上一篇:使用類時如何修復屬性錯誤
