在 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中文網其他相關文章!