Я знаю, что этот вопрос уже задавался здесь: Группировка Laravel по красноречивым связям , но ответы даны с 2016 года, и, похоже, они не работают в 2019 году. Также мой вопрос более прост, так как мне нужно толькоодин уровень отношений.
Мой вопрос
A user имеет несколько элементов .Как узнать, сколько items
пользователь имеет на каждый item_type
с одним запросом?
Вот что я пытался:
Запрос типа
User::with(['items' => function($q){
$q->groupBy('type');
});
возвращает эту ошибку:
Синтаксическая ошибка или нарушение доступа: 1055 Выражение №1 списка SELECT отсутствует в предложении GROUP BY и содержит неагрегированный столбец 'items.id', который функционально не зависит от столбцов в предложении GROUP BY;это несовместимо с sql_mode = only_full_group_by
Я попытался исправить эту ошибку с помощью следующего запроса:
User::with(['items' => function($q){
$q->select('type', \DB::raw('count(*) as total'))
->groupBy('type');
});
Однако это возвращает коллекцию users
, где каждый пользователь item
коллекция пуста.
Можно ли как-то сгруппировать по отношению в запросе?