ホームページ > データベース > mysql チュートリアル > Laravel EloquentでGroupByを使用して合計を正しく計算するにはどうすればよいですか?

Laravel EloquentでGroupByを使用して合計を正しく計算するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-30 00:11:39
オリジナル
543 人が閲覧しました

How to Correctly Calculate Sum with GroupBy in Laravel Eloquent?

Laravel Eloquent の GroupBy を使用した合計の計算

Laravel では、Eloquent ORM がデータベースと対話する強力な方法を提供します。一般的なタスクの 1 つは、特定のフィールドでグループ化しながら列の合計を計算することです。 sum() メソッドの使用は簡単そうに見えますが、実行順序が原因でエラーが発生する可能性があります。

間違ったアプローチ

$this->data['no_of_pages'] = Document::sum('no_of_pages')
                            ->groupBy('users_editor_id'); // Call to undefined method
ログイン後にコピー

上記のコードでは、 groupBy() メソッドは sum() メソッドの後に呼び出されます。この場合、sum() はクエリを実行し、groupBy() が実行される前に結果を返すため、エラーが発生します。

正しい解決策

groupBy で合計を正しく計算するには、次のアプローチを使用します。

アプローチ 1 (推奨)

Document::groupBy('users_editor_id')
    ->selectRaw('sum(no_of_pages) as sum, users_editor_id')
    ->pluck('sum', 'users_editor_id');
ログイン後にコピー

このメソッドは、selectRaw() メソッドを使用して計算された合計 (sum) の別名。次に、pluck() メソッドは sum フィールドと users_editor_id フィールドを抽出し、連想配列の結果を提供します。

アプローチ 2

Document::groupBy('users_editor_id')
    ->selectRaw('*, sum(no_of_pages) as sum')
    ->get();
ログイン後にコピー

このメソッドは擬似 ORM を作成します。各ドキュメント モデルに合計フィールドを追加することによって結果が得られます。ただし、結果は真の ORM コレクションではないため、あまり望ましくありません。

以上がLaravel EloquentでGroupByを使用して合計を正しく計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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