Как получить количество данных на основе сводной таблицы Laravel? - PullRequest
1 голос
/ 15 октября 2019

У меня есть три таблицы,

     User                   cities             user_cities

id name    title           id   name        user_id   city_id
1   aaa   designer         1   cityA          2         1
2   bbb   developer        2   cityB          2         3
3   ccc   designer         3   cityC          1         2
4   ddd   designer                            3         3
5   rrr   developer                           3         2
                                              4         2
                                              4         3

Теперь я собираюсь отфильтровать пользователей по их title=designer. Тогда данные фильтра будут:

     user

id name    title          
1   aaa   designer                
3   ccc   designer         
4   ddd   designer 

Наряду с этими данными мне нужно получить количество городов, подобных этому,

data: {
   0: {
      name:cityB,
      id:2,
      count:3
    },
    1: {
      name:cityC,
      id:3,
      count:2
    }
}

Как я могу получить это с помощью laravel eloquent?

1 Ответ

0 голосов
/ 15 октября 2019

Вы можете сделать

$users = App\User::where('title', 'designer')->get();

и использовать

foreach($users as $user) {
    $user->cities->count(); // collection count
}

Но лучшим способом будет Подсчет связанных моделей

$users = App\User::withCount('cities')->where('title', 'designer')->get();

а затем

foreach($users as $user) {
    $user->cities_count; // relationship count
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...