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