Мне нужно посчитать результаты подзапроса отношения «многие ко многим».
return $q->withCount(['users' => function($q) {
$q->select("Users.Id as Id_user","Users.Name");
}])->get()
Этот код не работает. Это возвращает ноль.
Тем не менее, это прекрасно работает и успешно добавляет столбец users_count:
return $q->withCount(['users'])->get();
Но мне нужно сделать подзапрос select, чтобы выбрать конкретные столбцы в отношении, поэтому мне нужно, чтобы мой первый вариант заработал.
Большое спасибо!
когда вы используете Count
или же withCount
метод, построитель запросов делает select count(id) as aggregate
если в условиях номинальной withCount
вы перекрываете select
часть. это ломает
return $q->withCount(['users' => function($q) {
//here you are supposed to do condition, not a select
$q->select("Users.Id as Id_user","Users.Name");
}])->get()
если вы хотите идентификатор и имя пользователя, используйте with
return $q->withCount(['users'])
->with(['users' => function($q) {
$q->select("Users.Id as Id_user","Users.Name");
}])
->get()
Других решений пока нет …