как я могу решить этот необработанный запрос - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь получить некоторые данные из моей базы данных, используя laravel db, и она выдает ошибку

$most_purchased_day = (int)Data::select('type')
                      ->whereDate('created_at', '=', date('d'))
                      ->groupBy('type')
                      ->orderByRaw('COUNT(*) DESC')
                      ->first()->network_id;

$most_purchased_day = (int)Data::select('type')
                     ->whereDate('created_at', '=', date('d'))
                     ->groupBy('type')
                     ->orderByRaw('COUNT(*) DESC')
                     ->first()->network_id;

Я ожидаю, что вывод будет наиболее покупаемым элементом на основе идентификатора сети

1 Ответ

0 голосов
/ 22 сентября 2019

Первый пользователь не получен, потому что экземпляр углерода created_at не совпадает с date('d') Измените код, чтобы использовать вместо него today () помощник

$most_purchased_day = (int)Data::select('type')
                      ->whereDate('created_at', '=', today())
                      ->groupBy('type')
                      ->orderByRaw('COUNT(*) DESC')
                      ->first()->network_id;

Предполагается, чтоСозданная сегодня модель Eloquent

App\Data {
     id: 1,
     created_at: "2019-09-22 13:15:19",
     updated_at: "2019-09-22 13:15:19",
   }

date('d') возвращает только целое число, которое является номером дня в текущем месяце (22) и не может соответствовать 2019-09-22 13:15:19 см. PHP: дата

Если вы хотите получить записи, созданные в любой день, который является номером текущего дня независимо от месяца и года

используйте whereDay

$most_purchased_day = (int)Data::select('type')
                      ->whereDay('created_at', '=', date('d'))
                      ->groupBy('type')
                      ->orderByRaw('COUNT(*) DESC')
                      ->first()->network_id;

From Laravel Docs

whereDate / whereMonth / whereDay / whereYear / whereTime

Метод whereDay может использоваться для сравнения столбцовзначение по отношению к определенному дню месяца:

$users = DB::table('users')
                ->whereDay('created_at', '31')
                ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...