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.2 で導入された論理グループ化を利用します:
Model::where(function ($query) { $query->where('a', '=', 1) ->orWhere('b', '=', 1); }) ->where(function ($query) { $query->where('c', '=', 1) ->orWhere('d', '=', 1); });
この例では、クエリは 2 つの別々の論理グループを結合し、各グループはそれぞれのセットに 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 中国語 Web サイトの他の関連記事を参照してください。