Как решить only_full_group_by в laravel eloquent?

Пользователь

от kenya , в категории: PHP , 7 месяцев назад

Как решить only_full_group_by в laravel eloquent?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jamey.kohler , 7 месяцев назад

@kenya 

Ошибка "only_full_group_by" возникает, когда в запросе используется группировка, но не все столбцы в выборке были либо проаггрегированы, либо включены в группировку. Это стандартное поведение в MySQL версии 5.7 и выше.


Для решения этой ошибки в Laravel Eloquent можно использовать функцию groupBy() для группировки результатов запроса. Однако, если в выборке используются столбцы, которые не были проаггрегированы или не включены в группировку, то в MySQL может возникнуть ошибка.


Для решения этой проблемы можно использовать один из следующих способов:

  1. Использование STRICT_TRANS_TABLES


Добавьте следующую строку в файл my.cnf, чтобы включить STRICT_TRANS_TABLES:

1
sql_mode=STRICT_TRANS_TABLES


Если вы не можете изменить этот файл, то можно выполнить запрос:

1
SET sql_mode='STRICT_TRANS_TABLES';


  1. Проаггрегировать все столбцы


Если вы хотите сохранить только_full_group_by, то можно проаггрегировать все столбцы в выборке. Например:

1
SELECT column1, SUM(column2) FROM table GROUP BY column1;


  1. Использование ANY_VALUE


Если вы используете MySQL версии 5.7 или выше, то можно использовать функцию ANY_VALUE(), чтобы проигнорировать only_full_group_by. Например:

1
SELECT column1, ANY_VALUE(column2) FROM table GROUP BY column1;


Таким образом, вы можете использовать один из перечисленных выше способов для решения проблемы only_full_group_by в Laravel Eloquent.