通过在laravel中查询Eloquent进行分组

时间:2016-07-21 11:35:04

标签: database laravel-5 eloquent

我需要一个按小时分组的查询然后返回data.i在数据库中有一个名称时间的列,时间列中的值如13:12:43。那么如何按小时分组。我需要结果按小时排序。我正在尝试给定的查询,但此查询返回所有单位的总和。但我需要基于小时的单位总和,如[{小时:1,单位:0.2232},{小时:2 ,单位:0.3232},..等等]

$response = PowerConsumption::groupBY('time')
                ->selectRaw('round(sum(unit),4) as yAxis')
                ->where(['device_id' => 2])
                    ->where('date',Carbon::now()->ToDateString)
                ->orderBy('time')->get();

1 个答案:

答案 0 :(得分:0)

来自你的控制者:

$response = PowerConsumption::selectRaw('HOUR(time) as hour')
                ->where(['device_id' => 2])
                    ->where('date',Carbon::now()->ToDateString)
                ->orderBy('time')->get()->groupBy('hour');
$results = [];
foreach ($response as $hour => $value) {
      $results[] = ['hour'=> $hour, 'unit' => round($value->sum('unit'), 4)]
}

如果您不使用ajax

,您可以在视图中预先显示结果