Я знаю, что это известная проблема, есть и другие вопросы по этой проблеме, но ни один из них не был полезен. Необработанный запрос работает нормально, если я запускаю напрямую к базе данных, когда он запускает throw Laravel, он выдает ошибку. Что, черт возьми, происходит?

Запрос:

Order::selectRaw("COUNT(id) AS `data`, DATE_FORMAT(created_at, '%m-%Y') AS new_date, YEAR(created_at) AS `year`, MONTH(created_at) AS `month`")
        ->groupBy('year')->get();

Ошибка:

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'orders.created_at' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select COUNT(id) AS `data`, DATE_FORMAT(created_at, '%m-%Y') AS new_date, YEAR(created_at) AS `year`, MONTH(created_at) AS `month` from `orders` group by `year`)
0
Shahid Karimi 9 Мар 2019 в 19:47

2 ответа

Лучший ответ

Это ошибка базы данных, не связанная с Laravel. Выполнение точно такого же запроса в базе данных также должно завершиться сбоем, если это не так, то должно произойти :).

Вам нужно также сгруппировать по другим полям в вашем запросе "new_date", "month" и "year". Попробуйте что-то вроде этого:

Order::selectRaw("COUNT(id) AS `data`, DATE_FORMAT(created_at, '%m-%Y') AS new_date, YEAR(created_at) AS `year`, MONTH(created_at) AS `month`")
    ->groupBy('year', 'month', 'new_date')->get();
0
Margus Pala 9 Мар 2019 в 17:14

Если при запуске этого в своей базе данных проблем нет, то это настройка laravel в вашем файле config-> database.php , просто установите 'strict' на 'false' .

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_general_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
],
0
kurapika 15 Мар 2019 в 02:25