首页 > 解决方案 > Eloquent 中按 groupBy 列的总和

问题描述

我的数据库记录了我们每个工程师每周的工作时间。我需要做的是返回一段时间内的所有时间('period_id'),按工程师('engineer_id')对它们进行分组,然后将以下各列加起来:周一、周二、周三、周四、周五、周六和周日. 基本上返回一段时间内每个工程师的总小时数。

在此处输入图像描述

希望这是有道理的。走到这一步。

$totals = Hours::where('late', 0)->where('period_id', $period->id);
$hours_totals = $totals->groupBy('employee_id');

标签: eloquent

解决方案


用这个:

Hours::select('engineer_id', DB::raw('sum(mon) mon'), DB::raw('sum(tues) tues'), [...])
    ->where('late', 0)
    ->where('period_id', 1)
    ->groupBy('engineer_id')
    ->get();

推荐阅读