Laravel withCount () возвращает ноль

Мне нужно посчитать результаты подзапроса отношения «многие ко многим».

return $q->withCount(['users' => function($q) {
$q->select("Users.Id as Id_user","Users.Name");
}])->get()

Этот код не работает. Это возвращает ноль.

Тем не менее, это прекрасно работает и успешно добавляет столбец users_count:

return $q->withCount(['users'])->get();

Но мне нужно сделать подзапрос select, чтобы выбрать конкретные столбцы в отношении, поэтому мне нужно, чтобы мой первый вариант заработал.

Большое спасибо!

0

Решение

когда вы используете 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()
0

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector