首页 >数据库 >mysql教程 >如何在 Laravel Eloquent 中使用 GroupBy 正确计算 Sum?

如何在 Laravel Eloquent 中使用 GroupBy 正确计算 Sum?

Barbara Streisand
Barbara Streisand原创
2024-12-30 00:11:39551浏览

How to Correctly Calculate Sum with GroupBy in Laravel Eloquent?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn