Разрешение конфликта SQL_MODE=ONLY_FULL_GROUP_BY в Laravel Eloquent
При использовании Eloquent для выполнения запроса по группировке вы можете столкнуться с ошибкой, связанной с несовместимые настройки для sql_mode=only_full_group_by. Эта ошибка может возникнуть, если в список SELECT включены неагрегированные столбцы, которые не являются частью предложения GROUP BY.
Чтобы решить эту проблему, вы можете отключить строгий режим MySQL, установив в своей базе данных следующее: файл конфигурации:
'connections' => [ 'mysql' => [ 'strict' => false, ] ]
Установив для параметра 'strict' значение false, вы позволяете MySQL вести себя так, как если бы он работал в режиме MySQL 5.6, который не применяет строгие правила группировки, налагаемые sql_mode=only_full_group_by.
В качестве альтернативы вы можете изменить свой запрос Eloquent, чтобы гарантировать, что все столбцы в списке SELECT либо агрегируются, либо включены в предложение GROUP BY. Например, вы можете использовать метод «raw» для добавления необходимой агрегации:
$products = Product::where('status', 1) ->where('stock', '>', 0) ->where('category_id', '=', $category_id) ->groupBy('store_id') ->orderBy('updated_at', 'desc') ->selectRaw('*, COUNT(*) AS total_products') ->take(4) ->get();
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3