#laravel #postgresql
#laravel #postgresql
Вопрос:
Я пытаюсь сгруппировать данные по месяцам за текущий год. Приведенный ниже запрос работает с базой данных MySQL, но выдает ошибку при подключении к PostgreSQL.
$results = DB::table('visits')
->select(DB::raw('month(visitdate) month, count(*) data'))
->where('team_id', 2)
->whereYear('visitdate', now()->year)
->groupBy('month')
->get();
Эта ошибка была сгенерирована:
SQLSTATE[42601]: Синтаксическая ошибка: ОШИБКА 7: синтаксическая ошибка в СТРОКЕ «месяц» или рядом с ней СТРОКА 1: выберите месяц (дата посещения) месяц, подсчитайте () данные из «посещений» w … ^ (SQL: выберите месяц (дата посещения) месяц, подсчитайте () данные из «посещений», где «team_id» = 2 и извлечь (год из «visitdate») = 2021 группа по «месяцу»)
Я попробовал аналогичный запрос с Eloquent и получил те же результаты.
В visitdate
столбце хранится дата в формате «2021-01-01», я использую laravel 8 с Breeze
Ответ №1:
month
это ключевое слово. Вместо этого вы должны выбрать что-то другое, или заключить это в двойные кавычки, или, в данном случае, просто поставить AS
перед ним. Любой из трех должен сработать.