2016-07-21 5 views
0

Мне нужен запрос, который группируется по часу, а затем возвращает data.i имеет столбец в базе данных с именем времени, а значение во времени - как 13: 12: 43.so как можно группировать по hour.And мне нужен результат с порядком по часам. Я пытаюсь выполнить данный запрос, но этот запрос возвращает сумму всех единиц. Но мне нужна сумма единиц на основе часа, например [{час: 1, единица: 0.2232} , {час: 2, единица измерения: 0,3232}, .. так далее]Группа по запросу Eloquent in laravel

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

ответ

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

+0

это сумма возврата всех единиц. – User101

+0

@ User101, сначала она группируется по часам, затем сумма должна суммировать данные группы –

Смежные вопросы