Laravel では、複数の条件に基づいてクエリを実行する必要があることがよくあります。これらの条件には、フィールド値、時間範囲、関係などが含まれる場合があります。この記事では、Laravel Eloquent を複数条件クエリに使用する方法について説明します。 基本的なクエリ Laravel でクエリを実行する場合、where、orWhere、などの基本的なクエリ メソッドを使用できます。 whereIn、whereNotIn など。これらのクエリ メソッドを連鎖させて、複数のクエリ条件を組み合わせることができます。たとえば、次のコードを使用して、ID 1 およびステータス 1 の記事の記事テーブルをクエリできます。 $article = DB::table('articles') ->where('id', 1) ->where('status', 1) ->first(); 上の例では、where メソッドを使用して 2 つの条件を指定します。 。 first メソッドは 1 つのレコードを取得するために使用されます。クエリ結果が空の場合は、null が返されます。 高度なクエリ Laravel の Eloquent モデルは、より複雑なクエリを処理するための多くの高度なクエリ メソッドも提供します。一般的に使用される高度なクエリ メソッドの一部を次に示します。 2.1 whereBetween メソッド whereBetween メソッドを使用すると、指定された範囲内のレコードをクエリできます。たとえば、次のコードを使用して、2019 年から 2020 年の間に作成された記事をクエリできます。 $articles = DB::table('articles') ->whereBetween('created_at', ['2019-01-01', '2020-12-31']) ->get();2.2 orWheremethod orWhereこのメソッドでは、複数の条件のいずれかが満たされるかどうかをクエリします。たとえば、次のコードを使用して、ステータス 1 または 2 の記事をクエリできます。 $articles = DB::table('articles') ->where('category_id', 1) ->orWhere('status', 1) ->get();2.3 whereHasmethod whereHas メソッドにより、次のことが可能になります。フィルター条件を満たす関連モデル内のレコードをクエリできます。たとえば、次のコードを使用して、コメント付きのすべての記事をクエリできます: $articles = DB::table('articles') ->whereHas('comments') ->get();上の例では、whereHas メソッドを使用して、関連するモデル comments## をクエリしました。 # 条件を満たすレコードや返品レコードがあるかどうか。特定の条件を満たすコメントをさらにフィルタリングしたい場合は、whereHas メソッドで追加のフィルタリング条件を渡すことができます。たとえば、次のようになります。 $articles = DB::table('articles') ->whereHas('comments', function($query) { $query->where('status', 1); }) ->get(); 上記の例では、 があります。 commentsモデルはクエリ条件を渡し、ステータスが 1 のコメントのみをクエリし、それらに関連付けられた記事レコードを返します。 2.4 whereIn および whereNotIn メソッド whereIn および whereNotIn を使用すると、指定された内容に従うことができます。フィールド 値の範囲で結果をフィルターします。たとえば、次のコードを使用して、記事ステータス 1、2、および 3 のレコードをクエリできます。 $articles = DB::table('articles') ->whereIn('status', [1, 2, 3]) ->get(); 混合使用 実際のアプリケーションでは、多くの場合、上記のクエリ方法を組み合わせて使用すると、複数条件のクエリを完了できます。たとえば、次のコードを使用して、カテゴリ ID 1、ステータス 1 で、コメント数が 5 を超える記事をクエリできます。 $articles = DB::table('articles') ->where('category_id', 1) ->where('status', 1) ->whereHas('comments', function($query) { $query->where('status', 1); }, '>', 5) ->get(); この例では、whereHas## を使用しました。 # メソッド 特定の条件を満たすコメントをクエリし、> 記号を使用してコメントの数が 5 より大きいかどうかをクエリします。 結論 Laravel では、複数のメソッドを使用して複数条件のクエリを実行できます。 Eloquent モデルの高度なクエリ メソッドを使用すると、複雑なクエリ操作をより簡単に完了できます。複数条件クエリのスキルを習得すると、開発中にタスクをより効率的に完了するのに役立ちます。