Laravel: выражение № 3 списка SELECT отсутствует в GROUP BY (запрос отношения «многие ко многим») - PullRequest
0 голосов
/ 05 сентября 2018

Я получил проект с Меню моделей и Пользователем, которые находятся в отношениях «Многие ко многим».

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

Я получил историю меню, работающую со следующим запросом:

public static function archives()
    {
        return  Menu::selectRaw('week(date, 1) as kw, year(date) as year')
                ->orderByRaw('min(date) asc')
                ->groupBy('kw', 'year')
                ->get();
    }

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

public static function archives(int $id)
    {
        return User::find($id)->menus()
                    ->selectRaw('week(date, 1) as kw, year(date) as year')
                    ->orderByRaw('min(date) asc')
                    ->groupBy('kw', 'year')
                    ->get();

    }

Выражение № 3 списка SELECT отсутствует в GROUP BY

1 Ответ

0 голосов
/ 05 сентября 2018

Ваш MySQL установлен на ONLY_FULL_GROUP_BY вариант.

Если включен режим SQL ONLY_FULL_GROUP_BY (который используется по умолчанию), MySQL отклоняет запросы, для которых список выбора, HAVING условие или список ORDER BY ссылаются на неагрегированные столбцы, которые не названы в предложении GROUP BY и не являются функционально зависимыми от их

https://dev.mysql.com/doc/refman/8.0/en/group-by-handling.html

Однако в laravel вы можете перезаписать его в config/database.php массиве соединений mysql строгом режиме

'mysql' => [
            ...
            'strict' => false,
            'engine' => null,
        ],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...