首頁 >資料庫 >mysql教程 >如何在 Laravel Eloquent 中使用 GroupBy 正確計算 Sum?

如何在 Laravel Eloquent 中使用 GroupBy 正確計算 Sum?

Barbara Streisand
Barbara Streisand原創
2024-12-30 00:11:39546瀏覽

How to Correctly Calculate Sum with GroupBy in Laravel Eloquent?

在 Laravel Eloquent 中使用 GroupBy 計算 Sum

在 Laravel 中,Eloquent ORM 提供了一種與資料庫互動的強大方式。一項常見任務是在按特定欄位分組時計算列的總和。雖然使用 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 正確計算 Sum?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn