Как подсчитать из сводной таблицы Laravel? - PullRequest
0 голосов
/ 14 октября 2019

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

  User          cities            user_cities

id name        id   name       user_id   city_id
1   aaa        1   cityA         2         1
2   bbb        2   cityB         2         3
3   ccc        3   cityC         1         2
                                 3         3
                                 3         2

Теперь я filtering the user by cities. У меня есть city_id = 2. Так что мне нужно получить количество пользователей, принадлежащих city_id 2. Как я могу получить это, используя laravel eloquent

Ответы [ 5 ]

1 голос
/ 14 октября 2019

Есть разные способы сделать это, отметьте https://laravel.com/docs/5.8/queries

Но простой способ сделать это может быть:

UserCity::whereCityId(2)->count();

Или:

UserCity::where('city_id',2)->count();
0 голосов
/ 14 октября 2019

Убедитесь, что у вас belongsToMany связь в модели.

City.php модель

class City extends Model
{
    public function users(){
        return $this->belongsToMany('App\User', 'user_cities', 'city_id', 'user_id');
    }
}

User.php Модель

class User extends Model
{
    public function cities(){
        return $this->belongsToMany('App\City', 'user_cities','user_id','city_id');
    }
}

Сейчас в Контроллер .

$citieswithcount = City::where('id', 2)->withCount('users')->first();
echo $citieswithcount->users_count;
exit;
0 голосов
/ 14 октября 2019

Как вы описываете в своем ответе, у вас есть третья таблица user_cities.

Если у вас есть таблица user_cities, то считайте пользователя как

DB::table('user_cities')->where('city_id', '2')->count();
0 голосов
/ 14 октября 2019

Попробуйте этот запрос:

$count = City::where('id', 2)->whereHas('users')->count();
0 голосов
/ 14 октября 2019

Если вы правильно установили отношения между ними, вы можете сделать что-то вроде этого:

City::where('id', '=', 2)->withCount('users')->get();

Это поместит столбец {отношение} _count в вашу результирующую модель, и, таким образом, вы можете назвать его каксвойство: $city->users_count

Дайте мне знать, если это помогло.

edit: Для получения дополнительной информации вы можете проверить официальную документацию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...