ホームページ >データベース >mysql チュートリアル >Laravel EloquentでGroupByを使用して合計集計を効率的に実行する方法は?

Laravel EloquentでGroupByを使用して合計集計を効率的に実行する方法は?

DDD
DDDオリジナル
2025-01-03 08:25:381007ブラウズ

How to Efficiently Perform Sum Aggregations with GroupBy in Laravel Eloquent?

Laravel Eloquent の GroupBy による合計集計

はじめに:
Laravel の Eloquent ORM は、データベース。大規模なデータセットを操作する場合、データをグループ化し、合計などの集計を実行する必要があります。

問題ステートメント:
提供されたコードは、users_editor_id によってグループ化された no_of_pages の合計を計算しようとします。 Eloquent の sum() メソッドと groupBy() メソッドを使用します。ただし、このアプローチは、groupBy() が適用される前に sum() がクエリを実行して結果を返すという事実により失敗します。

解決策:

解決するにはこの問題では、groupBy() メソッドと selectRaw() メソッドを組み合わせて使用​​できます。更新されたソリューションは次のとおりです:

Document::groupBy('users_editor_id')
   ->selectRaw('sum(no_of_pages) as sum, users_editor_id')
   ->pluck('sum','users_editor_id');

説明:

  • groupBy('users_editor_id'): users_editor_id 列ごとに行をグループ化します。
  • selectRaw('sum(no_of_pages) を合計として、 users_editor_id'): sum という名前の新しい列を結果に追加します。この列には、各グループの no_of_pages の合計が含まれます。
  • pluck('sum','users_editor_id'): sum と users_editor_id の値を取得して返します。配列として。

代替解決策:

もう 1 つのアプローチは、selectRaw() メソッドを get() とともに使用して、疑似 ORM モデルのコレクションを返すことです。

Document::groupBy('users_editor_id')
   ->selectRaw('*, sum(no_of_pages) as sum')
   ->get();

このメソッドは合計を加算します。結果の各モデルに列を追加し、通常のモデルと同様にアクセスできるようにします。 property.

結論:

groupBy()、selectRaw()、および pluck() メソッドを利用することで、Laravel Eloquent でグループ化を使用した合計集計を効率的に実行できます。 。これらの手法により、大規模なデータセットを効果的に処理し、データから貴重な洞察を取得できるようになります。

以上がLaravel EloquentでGroupByを使用して合計集計を効率的に実行する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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