ホームページ >データベース >mysql チュートリアル >Laravelのクエリビルダーを使用してサブクエリから効率的に選択するにはどうすればよいですか?

Laravelのクエリビルダーを使用してサブクエリから効率的に選択するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-12 07:08:43275ブラウズ

How to Efficiently Select from Subqueries Using Laravel's Query Builder?

Laravel クエリビルダーを使用してサブクエリからデータを選択します

質問: Eloquent ORM を使用して SQL サブクエリからカウント集計の値を取得します。

初期メソッド:

<code class="language-php">$sql = Abc::from('abc AS a')
    ->groupBy('col1')
    ->toSql();

$num = Abc::from(\DB::raw($sql))
    ->count();</code>

このアプローチでは、サブクエリ SQL を手動で生成する必要がありますが、これは理想的ではありません。

最良の解決策:

Laravel クエリビルダーには現在、FROM 句でサブクエリを作成する専用のメソッドがありません。 生のステートメントは、適切なバインディング管理を使用して手動で使用する必要があります:

<code class="language-php">// 定义子查询
$sub = Abc::where(...)->groupBy(...); // Eloquent Builder 实例

// 创建主查询
$count = DB::table(DB::raw("({$sub->toSql()}) AS sub"))
    ->mergeBindings($sub->getQuery()) // 正确合并绑定
    ->count();</code>

注: バインディングは正しい順序でマージする必要があります。マージ後に追加の条件が追加された場合は、正しいバインドを確保するために順序を調整する必要があります。

以上がLaravelのクエリビルダーを使用してサブクエリから効率的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。