ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。