«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как разрешить конфликт SQL_MODE=ONLY_FULL_GROUP_BY в Laravel Eloquent?

Как разрешить конфликт SQL_MODE=ONLY_FULL_GROUP_BY в Laravel Eloquent?

Опубликовано 4 ноября 2024 г.
Просматривать:474

How to Resolve SQL_MODE=ONLY_FULL_GROUP_BY Conflict in Laravel Eloquent?

Разрешение конфликта 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();
Заявление о выпуске Эта статья перепечатана по адресу: 1729224796. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3