ホームページ > データベース > mysql チュートリアル > Laravelの「whereIn」句でサブクエリを使用する方法は?

Laravelの「whereIn」句でサブクエリを使用する方法は?

Patricia Arquette
リリース: 2024-12-07 12:47:16
オリジナル
920 人が閲覧しました

How to Use Subqueries with Laravel's `whereIn` Clause?

Laravel クエリへのサブクエリの組み込み: サブクエリ WHERE IN の例

複雑なデータベース クエリを扱う場合、サブクエリはデータを取得する強力な方法を提供します複数のテーブルから取得したり、計算に基づいて結果をフィルタリングしたりできます。人気の PHP フレームワークである Laravel は、サブクエリを操作するための使いやすいインターフェイスを提供します。

問題:

Laravel で次の内容を抽出するクエリを作成する必要があります。サブクエリを使用して、「product_category」テーブルの値に基づいてフィルタリングする「product」テーブルのデータ。具体的には、次の基準を満たす行を含める必要があります。

  • 「products」テーブルの「id」は、「product_category」テーブルの「product_id」列に表示される必要があります。
  • 「product_category」テーブルのカテゴリ ID 値は「223」または「15」です。
  • 「active」列"products" テーブルの は 1 に設定されます。

解決策:

これを実現するために、Laravel は、次を使用してサブクエリをクエリに組み込む柔軟な方法を提供します。クロージャ:

Products::whereIn('id', function($query){
    $query->select('product_id')
    ->from(with(new ProductCategory)->getTable())
    ->whereIn('category_id', ['223', '15'])
    ->where('active', 1);
})
->get();
ログイン後にコピー
  1. サブクエリ定義 (クロージャ内):

    • function($query): を定義するクロージャsubquery.
    • $query->select(...): を指定しますサブクエリのどの列を取得するか。この場合、それは「product_id」です。
    • from(with(new ProductCategory)->getTable()): サブクエリのデータをフェッチするテーブルを決定します。 「product_category」テーブルを参照します。
    • ->whereIn('category_id', ['223', '15']): サブクエリのフィルター条件を設定し、結果を「category_id」の行に制限します。 '223' または '15' のいずれかです。
    • ->where('active', 1): 「product_category」テーブルで「active」が 1 に設定されていることを確認する追加のフィルターを追加します。
  2. メイン クエリ:

    • whereIn('id', ...): これは、クロージャで定義されたサブクエリを使用するメインクエリです。これは、「products」テーブルの「id」列とサブクエリの結果の「product_id」を照合します。

以上がLaravelの「whereIn」句でサブクエリを使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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