我需要一个按小时分组的查询然后返回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();
答案 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
,您可以在视图中预先显示结果