Laravel Eloquent - получайте записи каждый час - PullRequest
0 голосов
/ 30 января 2019

У меня есть таблица, в которой хранится статистика каждые 3 минуты с заданием cron.Я хочу отобразить график с этими данными, но я хочу, чтобы график имел интервал 1 час, в противном случае он выглядит ужасно чертовски и требует слишком много ресурсов.В таблице есть столбцы create_at и updated_at.

Как я могу сделать это с eloquent?

РЕДАКТИРОВАТЬ: я хочу запросить записи за последние 24 часа, но это дает мне около 480 записей, которыеэто слишком много для диаграммы.Вместо этого я хотел бы иметь только 24 записи (по одной на каждый час).

Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Спасибо, Тим!Для тех, кто читает это позже, вот решение: https://laracasts.com/discuss/channels/laravel/count-rows-grouped-by-hours-of-the-day

Model::where('created_at', '>=', Carbon::now()->subDay())->get()->groupBy(function($date) {
    return Carbon::parse($date->created_at)->format('h');
});
0 голосов
/ 30 января 2019

Это позволит вам получать данные 1 час назад на основе текущего времени.

//Get all data for the day
$all_data = Model::where('created_at','>=',Carbon::today()->get());
//Recursive to groupBy hours
$i=1;
while ($all_data->last() != null)
{
    $hourly_data = Model::where('created_at','>=',Carbon::today()->addHours($i))->get();
    $all_data= $all_data->merge($hourly_data);
$i++
}

return $all_data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...