首頁 >資料庫 >mysql教程 >如何在 Laravel Eloquent 中使用 GroupBy 高效能執行求和聚合?

如何在 Laravel Eloquent 中使用 GroupBy 高效能執行求和聚合?

DDD
DDD原創
2025-01-03 08:25:381006瀏覽

How to Efficiently Perform Sum Aggregations with GroupBy in Laravel Eloquent?

Laravel Eloquent 中使用GroupBy 進行求和聚合

簡介:
Laravel 的Eloquent ORM 提供了一種

Laravel 的Eloquent ORM 提供了一種Laravel 的Eloquent ORM 提供了一種

Laravel 的Eloquent ORM 提供了一種

Laravel 的Eloquent ORM 提供了一個方便的方法檢索和操作來自資料庫。當處理大型資料集時,有必要對資料進行分組並執行求和等聚合。

問題陳述:

Document::groupBy('users_editor_id')
   ->selectRaw('sum(no_of_pages) as sum, users_editor_id')
   ->pluck('sum','users_editor_id');
提供的程式碼嘗試計算 users_editor_id 分組的 no_of_pages 的總和使用 Eloquent 的 sum() 和 groupBy() 方法。但是,這種方法會失敗,因為 sum() 在套用 groupBy() 之前執行查詢並傳回結果。

解:

  • 解決這個問題,我們可以結合使用 groupBy() 和 selectRaw() 方法。這是更新的解決方案:
  • 說明:

groupBy('users_editor_id'):以 users_editor_id 欄位分組。

selectRaw('sum(no_of_pages) as sum, users_editor_id'): 在結果中新增一個名為 sum 的新欄位,其中包含每個群組的 no_of_pages 的總和。

pluck('sum','users_editor_id'): 檢索總和和 users_editor_id 值並傳回它們作為陣列。
Document::groupBy('users_editor_id')
   ->selectRaw('*, sum(no_of_pages) as sum')
   ->get();

替代解決方案:

另一種方法是使用 selectRaw() 方法和 get() 一起傳回偽 ORM模型的集合:

此方法將總和相加每個結果模型的列,允許您像常規模型一樣訪問它結論:利用groupBy()、selectRaw() 和pluck() 方法,我們可以在Laravel Eloquent中透過分組有效率地執行求和聚合。這些技術使我們能夠有效地處理大型資料集並從資料中檢索有價值的見解。

以上是如何在 Laravel Eloquent 中使用 GroupBy 高效能執行求和聚合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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