Как отключить опцию only_full_group_by в Laravel

Я новичок в Laravel, и у меня возникла проблема с БД.

Я отключил «only_full_group_by» sql_mode редактированием /etc/mysql/my.cnf файл. И я проверил sql_mode для глобального и сеансового использования SELECT @@GLOBAL.sql_mode; а также SELECT @@SESSION.sql_mode; и подтвердил, что sql_mode больше не имеет only_full_group_by,

Однако, когда я делаю запрос через почтальона, он выдает ошибку this is incompatible with sql_mode=only_full_group_by,

Я так растерялся. Почему я получаю эту ошибку даже после того, как я изменился sql_mode? Я делаю что-то неправильно?

Любые предложения или советы будут оценены.

Спасибо.

SQL с помощью toSql ()

select A.*
from `A`
inner join `B` on `A`.`id` = `B`.`a_id`
inner join `C` on `C`.`id` = `B`.`c_id`
group by `A`.`id` having COUNT(A.id) > 0;

2

Решение

Это неправильный способ сделать это. Вместо выключения only_full_group_by В этом режиме вы должны исправить запрос, чтобы он не нарушал MySQL:

SELECT a1.*
FROM A a1
INNER JOIN
(
SELECT A.id
FROM A
INNER JOIN B
ON A.id = B.a_id
INNER JOIN C
ON C.id = B.c_id
GROUP BY A.id
HAVING COUNT(A.id) > 0
) a2
ON a1.id = a2.id;

Я не знаю, почему ваши попытки отключить строгий режим потерпели неудачу, но вы ни в коем случае не должны на это полагаться.

1

Другие решения

Чтобы ответить на исходный вопрос, если вы хотите отключить это в Laravel, вы должны изменить значение ‘strict’ на ложный в конфигурации вашей базы данных в config / database.php.

'connections' => [
...

'mysql' => [
...
'strict' => false,
...

],

]
0

По вопросам рекламы [email protected]