「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Laravelのクエリビルダーを使用して、サブQueriesから効率的に選択するにはどうすればよいですか?

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

2025-03-23に投稿されました
ブラウズ:861

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

laravel query constructors subqueries

]を効率的に処理する

雄弁ormを使用してサブクエリからデータを取得する場合、開発者はしばしば tosql()とネイティブクエリを組み合わせて使用​​します。この方法は効果的ですが、直感的ではありません。これがより効率的なソリューションです:

たとえば、次のサブクエリから結果カウントを抽出するには:

SELECT COUNT(*) 
FROM (
  SELECT * 
  FROM abc 
  GROUP BY col1
) AS a;
として

Laravelを使用すると、 MergeBindings を使用して、ネイティブクエリを雄弁なクエリにマージできます。まず、サブキュリー用の雄弁なビルダーインスタンスを作成します。

$sub = Abc::where(..)->groupBy(..);

次に、 db :: table を使用して、サブクエリを参照し、対応するバインディングを手動で設定する新しいテーブルを作成します。

$count = DB::table( DB::raw("({$sub->toSql()}) as sub") )
    ->mergeBindings($sub->getQuery()) // 获取底层查询构造器
    ->count();
このアプローチにより、正しいバインディングがマージされたクエリに適用されるようになり、その結果、文字列操作を手動で実行せずに必要な結果が得られます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3