特定年份的特定月份中特定用户的值之和

时间:2019-01-03 10:25:32

标签: laravel

我有一个带有 时间戳,用户ID,值 的表。我试图获取特定用户在特定年份的特定月份的值的总和。这就是我正在使用的:

$data = Laborhrs::all()->where('employee','7')->sum('value');

这给了我#7员工的全部数据的总和。我希望得到特定年份中特定月份的总和。说说2018年10月的价值总和。我想念什么?

1 个答案:

答案 0 :(得分:1)

您忘记添加年份和月份的条件,并且不需要使用all()方法。

$sum = Laborhrs::where('employee','7')
        ->whereMonth('timestamp_column_name', 10)
        ->whereYear('timestamp_column_name', 2018)
        ->sum('value');

此外:我看过您的几篇文章,并且我认为,您不了解laravel雄辩和收藏如何工作。

All()方法从数据库返回具有所有结果的收集,然后通过收集过滤它们(我不是第一次看到)。这是非常缓慢的解决方案。

最好在get()中使用条件(get()应该在条件之后),例如:

$data = Laborhrs::where('employee','7')->get();

它将返回具有所需结果的集合,并且从数据库中获取后无需过滤它们。它将更快地工作。

在这种情况下,您根本不需要all()get()方法。 Eloquent拥有sum()方法,该方法将计算数据库中的总和并返回值。