Laravel withCount () возвращает ноль - PullRequest
0 голосов
/ 08 ноября 2018

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 08 ноября 2018

при использовании метода 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...