Laravel 中的 Eloquent Sum 和 Group By 查詢
在 Laravel 中,Eloquent ORM 提供了一種與資料庫互動的便捷方式。然而,在處理大型資料集時,可能需要執行將 SUM 等聚合函數與 GROUP BY 等分組操作結合的複雜查詢。
挑戰
一出現此問題的常見情況是當您想要取得特定欄位的總和,同時按另一個欄位將結果分組時。例如,您可能想要尋找文件資料庫中每個編輯者所寫的總頁數。
解決方案 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 中高效執行 Eloquent SUM 和 GROUP BY 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!