简介:
Laravel 的 Eloquent ORM 提供了一种便捷的方法来检索和操作来自数据库。当处理大型数据集时,有必要对数据进行分组并执行求和等聚合。
问题陈述:
提供的代码尝试计算按 users_editor_id 分组的 no_of_pages 的总和使用 Eloquent 的 sum() 和 groupBy() 方法。但是,这种方法会失败,因为 sum() 在应用 groupBy() 之前执行查询并返回结果。
解决方案:
解决这个问题,我们可以结合使用 groupBy() 和 selectRaw() 方法。这是更新的解决方案:
Document::groupBy('users_editor_id') ->selectRaw('sum(no_of_pages) as sum, users_editor_id') ->pluck('sum','users_editor_id');
说明:
替代解决方案:
另一种方法是使用 selectRaw() 方法和 get() 一起返回伪 ORM 模型的集合:
Document::groupBy('users_editor_id') ->selectRaw('*, sum(no_of_pages) as sum') ->get();
此方法将总和相加每个结果模型的列,允许您像常规模型一样访问它
结论:
通过利用 groupBy()、selectRaw() 和 pluck() 方法,我们可以在 Laravel Eloquent 中通过分组高效地执行求和聚合。这些技术使我们能够有效地处理大型数据集并从数据中检索有价值的见解。
以上是如何在 Laravel Eloquent 中使用 GroupBy 高效执行求和聚合?的详细内容。更多信息请关注PHP中文网其他相关文章!