Laravel Eloquent如何在单个WHERE子句中使用AND逻辑
Laravel Eloquent 多条件WHERE子句写法说明
你写的这种合并方式完全不可行,$request->FLA && 'Date'是错误的逻辑表达式,会把请求参数和字符串做布尔运算,导致传递给where的参数完全不符合要求,直接运行会报错。
如果想把两个AND条件合并到单个where方法调用里,正确的写法是使用数组参数:
Query1::where([ ['Course_ID', '=', $request->FLA], ['Date', '=', Carbon::today()] ])->get();
这种写法生成的SQL和你原来链式调用where的效果完全一致,最终SQL会是WHERE Course_ID = ? AND Date = ?,默认就是AND逻辑连接多个条件。
另外补充:你最初的链式where写法本身是合法且正确的,如果你只是单纯想减少方法调用次数,数组形式是最优解。如果后续需要处理更复杂的条件分组(比如混合AND/OR逻辑),可以用闭包形式:
Query1::where(function ($query) use ($request) { $query->where('Course_ID', '=', $request->FLA) ->where('Date', '=', Carbon::today()); })->get();
不过这种写法在你的简单AND场景下,和数组、链式写法的效果完全相同。
内容的提问来源于stack exchange,提问作者John Lyons
相关产品推荐
相关产品推荐

