ホームページ > データベース > mysql チュートリアル > GROUP BYを使用してLaravelサブクエリからレコードを効率的にカウントする方法は?

GROUP BYを使用してLaravelサブクエリからレコードを効率的にカウントする方法は?

Susan Sarandon
リリース: 2025-01-12 06:06:41
オリジナル
956 人が閲覧しました

How to Efficiently Count Records from a Laravel Subquery with GROUP BY?

Laravel クエリビルダーでのサブクエリの選択

Eloquent ORM のクエリ ビルダーを使用してサブクエリからデータを選択するのは難しい場合があります。この記事では、GROUP BY を使用して作成されたサブクエリのレコード数を取得したいユーザーが直面する特定の問題に対処します。

質問を詳しく見てみましょう:

ユーザーは当初、次のコードを使用してこの問題を解決しようとしました:

<code class="language-php">$sql = Abc::from('abc AS a')
    ->groupBy('col1')
    ->toSql();
$num = Abc::from(DB::raw($sql))
    ->count();
print $num;</code>
ログイン後にコピー

このアプローチは論理的であるように見えますが、最も効率的な解決策ではありません。

エレガントで最適化されたソリューション:

提案される解決策には、生の SQL とバインド マージを組み合わせて使用​​することが含まれます。

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

$count = DB::table(DB::raw("({$sub->toSql()}) as sub"))
    ->mergeBindings($sub->getQuery()) // 以正确的顺序合并绑定
    ->count();</code>
ログイン後にコピー

このソリューションでは、Eloquent Builder インスタンスを使用してサブクエリが構築され、生の SQL 式に組み込まれます。 mergeBindings() メソッドは、サブクエリのバインディングとメインクエリのバインディングを結合するために使用されます。こうすることで、サブクエリから必要なデータを効率的に取得できます。

以上がGROUP BYを使用してLaravelサブクエリからレコードを効率的にカウントする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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