在Laravel Eloquent 中使用多個OR 和AND 條件進行查詢
在Laravel Eloquent 中,建構涉及多個OR 和AND 條件的複雜查詢有時可能需要請仔細考慮。
使用 OR 和 進行查詢AND
使用 Eloquent 表示以下 SQL 語句:
WHERE (a = 1 OR b =1 ) AND (c = 1 OR d = 1)
利用 Laravel 7.x/4.中引入的邏輯分組:
Model::where(function ($query) { $query->where('a', '=', 1) ->orWhere('b', '=', 1); }) ->where(function ($query) { $query->where('c', '=', 1) ->orWhere('d', '=', 1); });
在此範例中,查詢連接兩個單獨的邏輯群組,其中每個群組對其各自的列集套用 OR 條件。然後使用 AND 條件連接這些邏輯組。
使用原始 SQL 進行複雜查詢
對於更複雜的查詢,可能需要使用原始 SQL。這可以使用 DB::raw() 方法來完成。例如,要使用原始SQL 執行與上述相同的查詢:
$query = "SELECT * FROM table_name WHERE (a = 1 OR b = 1) AND (c = 1 OR d = 1)"; $results = DB::select(DB::raw($query));
請記住,使用原始SQL 可以繞過Eloquent 的查詢產生器保護,應謹慎使用,因為它可能會導致潛在的安全漏洞.
以上是如何在 Laravel Eloquent 中建構具有多個 OR 和 AND 條件的複雜查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!