ホームページ >バックエンド開発 >PHPチュートリアル >Laravel で「WHERE IN」を含むサブクエリを効率的に使用してデータをフィルタリングするにはどうすればよいですか?
Laravel の 'WHERE IN' 句を使用したサブクエリ
Laravel では、'WHERE IN' 句内にサブクエリを作成すると効率的です。関連テーブルのデータに基づいて結果をフィルターする方法。特定のシナリオを検討してみましょう:
カテゴリに基づいて製品を取得するというタスクが課せられています。クエリには ID、名前、ステータスなどの列が含まれている必要があり、製品は ID '223' または '15' の特定のカテゴリに属している必要があります。
元のクエリ:
SELECT `p`.`id`, `p`.`name`, `p`.`img`, `p`.`safe_name`, `p`.`sku`, `p`.`productstatusid` FROM `products` p WHERE `p`.`id` IN ( SELECT `product_id` FROM `product_category` WHERE `category_id` IN ('223', '15') ) AND `p`.`active`=1
Laravel と同等の使用法クロージャ:
Products::whereIn('id', function($query){ $query->select('paper_type_id') ->from(with(new ProductCategory)->getTable()) ->whereIn('category_id', ['223', '15']) ->where('active', 1); }) ->get();
説明:
「whereIn」関数は引数としてクロージャを受け取り、その中でサブクエリを定義できます。
クロージャを使用する利点:
以上がLaravel で「WHERE IN」を含むサブクエリを効率的に使用してデータをフィルタリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。