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