Laravelで複雑なクエリ条件を作成する方法

PHPz
リリース: 2023-04-21 10:37:31
オリジナル
776 人が閲覧しました

Laravel では、複雑なクエリ条件を構築することが非常に一般的な要件です。同時に複数の条件を満たすデータをクエリする必要がある場合、特定のフィールドの最大値または最小値をクエリする必要がある場合、特定の条件を満たさないデータをクエリする必要がある場合などがあります。この記事では、Laravel のクエリ ビルダーを使用してこれらの要件を達成する方法を紹介します。

  1. 基本的なクエリ

まず、Laravel の基本的なクエリ構文を見てみましょう。 Laravel では、DB ファサードの table() メソッドを使用してクエリするテーブルを指定し、select() メソッドを使用してクエリする必要があるフィールドを指定できます。

たとえば、次のコードは、users テーブル内のすべてのレコードをクエリし、その ID フィールドと名前フィールドを返します。

DB::table('users')->select('id', 'name')->get();
ログイン後にコピー

where() メソッドを使用してクエリ条件を指定することもできます。たとえば、次のコードは、users テーブル内の 18 より古いレコードをクエリします。

DB::table('users')->where('age', '>', 18)->get();
ログイン後にコピー
  1. クエリ条件の組み合わせ

複数の条件を満たす必要がある場合同時に、where () メソッドを使用してクエリ条件を組み合わせることができます。

たとえば、次のコードは、18 歳以上で男性の両方のレコードについて users テーブルをクエリします。

DB::table('users')->where('age', '>', 18)->where('gender', 'male')->get();
ログイン後にコピー

orWhere() メソッドを使用して、いずれかのレコードを指定することもできます。条件は満たしています。

たとえば、次のコードは、users テーブル内の 18 歳以上または性別が男性のレコードをクエリします。

DB::table('users')->where('age', '>', 18)->orWhere('gender', 'male')->get();
ログイン後にコピー

複数の条件の組み合わせが必要な場合は、次のように使用できます。それを達成するためのクロージャ。

たとえば、次のコードは、users テーブルにクエリを実行して、年齢が 18 歳以上で性別が男性、または年齢が 18 歳以上で性別が女性という要件を満たすレコードを探します。 ##ファジー クエリ

  1. フィールドの一部に基づいてクエリを実行する必要がある場合があります。 like() メソッドとワイルドカードを使用して、ファジー クエリを実装できます。次のコードは、名前が「J」で始まる users テーブル内のレコードをクエリします。
  2. DB::table('users')->where(function($query) {
        $query->where('age', '>', 18)
              ->where('gender', 'male');
    })->orWhere(function($query) {
        $query->where('age', '=', 18)
              ->where('gender', 'female');
    })->get();
    ログイン後にコピー

最大値と最小値のクエリ

  1. 特定の値をクエリする必要がある場合があります。フィールド 最大値または最小値。これは、max() メソッドと min() メソッドを使用して行うことができます。次のコードは、users テーブルの age フィールドの最大値と最小値をクエリします。特定のフィールドが特定の値のレコードと等しくない。これを実現するには、where() メソッドと <> シンボルを使用します。次のコードは、users テーブル内の性別が男性ではないレコードをクエリします。
  2. DB::table('users')->where('name', 'like', 'J%')->get();
    ログイン後にコピー

in and not in query

  1. の値をクエリする必要がある場合があります。リスト内の特定のフィールドレコード。これは、whereIn() メソッドと値のリストを使用して行うことができます。次のコードは、users テーブル内の年齢フィールド値が 18、19、または 20 であるレコードをクエリします。
  2. $maxAge = DB::table('users')->max('age');
    $minAge = DB::table('users')->min('age');
    ログイン後にコピー
whereNotIn() メソッドを使用して、値リストにないレコードをクエリすることもできます。

    存在するクエリと存在しないクエリ
特定の条件が存在するか存在しないレコードをクエリする必要がある場合があります。これを実現するには、whereExists() メソッドと whereNotExists() メソッドを使用できます。次のコードは、ユーザーに対応するレコードの注文テーブルをクエリします。

DB::table('users')->where('gender', '<>', 'male')->get();
ログイン後にコピー
また、whereNotExists() メソッドを使用して、対応するユーザーに存在しないレコードをクエリすることもできます。

これまで、Laravel で複雑なクエリ条件を構築する基本的な方法を紹介しました。 Laravel のクエリ ビルダーを使用すると、SQL 構文の詳細についてあまり考えることなく、クエリ ステートメントを簡単かつ直感的に作成できるようになります。もちろん、上記はクエリ ステートメントの氷山の一角にすぎず、Laravel のクエリ ビルダーには多くの高度な使用法が私たちの発見を待っています。

    以上がLaravelで複雑なクエリ条件を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート