ホームページ > バックエンド開発 > PHPチュートリアル > Laravel EloquentでWHERE IN句を使用したサブクエリを実装する方法は?

Laravel EloquentでWHERE IN句を使用したサブクエリを実装する方法は?

Barbara Streisand
リリース: 2024-12-06 20:45:16
オリジナル
734 人が閲覧しました

How to Implement a Subquery with WHERE IN Clause in Laravel Eloquent?

Laravel での WHERE IN によるサブクエリ

Laravel では、サブクエリを使用して複雑なクエリを実行できます。一般的な使用例は、WHERE IN 句を使用したサブクエリです。この記事では、このクエリ タイプを効果的に実装する方法を説明します。

次の SQL クエリを考えてみましょう:

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 の Eloquent ORM を使用すると、次のコードでこのクエリを実現できます:

Products::whereIn('id', function($query){
    $query->select('paper_type_id')
    ->from(with(new ProductCategory)->getTable())
    ->whereIn('category_id', ['223', '15'])
    ->where('active', 1);
})
->get();
ログイン後にコピー

この例では、「Products」モデルに対するクエリを作成することから始めます。 ('Products::whereIn(...)')。 「whereIn」句は、「id」フィールドに基づいて「Products」をフィルタリングすることを指定します。このフィールドは、サブクエリによって返される結果に含まれる必要があります。

サブクエリ自体は、匿名関数を使用して定義されています。 ('$query => ...')。このサブクエリは、「product_category」テーブルから「paper_type_id」フィールドを選択します。このフィールドは、「ProductCategory」モデルとの関係を通じて使用できると想定されています。テーブル名は、「with(...)->getTable()」メソッドを使用して取得されます。

サブクエリ内で、「category_id」フィールドに基づいて結果をフィルタリングする条件を追加し、 「アクティブ」フィールドは 1 に設定されています。これらの条件は、最終結果に含める製品カテゴリを絞り込むのに役立ちます。

このアプローチを使用すると、目的を満たす製品を効率的に取得できます。コストのかかる結合を実行することなく基準を取得できます。

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

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