Laravel の Eloquent Sum と Group By クエリ
Laravel では、Eloquent ORM がデータベースと対話する便利な方法を提供します。ただし、大規模なデータセットを操作する場合は、SUM などの集計関数と GROUP BY などのグループ化操作を組み合わせた複雑なクエリを実行することが必要になる場合があります。
課題
1この疑問が生じる一般的なシナリオは、結果を別のフィールドごとにグループ化しながら、特定のフィールドの合計を取得したい場合です。たとえば、ドキュメント データベース内の各編集者によって書き込まれた合計ページ数を確認したい場合があります。
解決策 1: selectRaw と pluck を使用する
これを実現するには, まず、groupBy メソッドを使用して、目的のフィールドごとに結果をグループ化します。次に、selectRaw メソッドを使用して計算を定義し、最後に pluck メソッドを使用して各グループの合計の配列を作成します。
Document::groupBy('users_editor_id') ->selectRaw('SUM(no_of_pages) AS sum, users_editor_id') ->pluck('sum', 'users_editor_id');
解決策 2: selectRaw と get を使用する
また、selectRaw メソッドと get メソッドを使用して同様の結果を得ることができます。ただし、このアプローチでは、追加フィールドとして計算された合計を含む疑似モデルのコレクションが返されます。
Document::groupBy('users_editor_id') ->selectRaw('*, SUM(no_of_pages) AS sum') ->get();
これらのテクニックを活用することで、Eloquent クエリで複雑な集計およびグループ化操作を効率的に実行できます。データベースから貴重な洞察を得ることができます。
以上がLaravelで雄弁なSUMクエリとGROUP BYクエリを効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。