我有两个桌子,
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雄辩的方式得到它
答案 0 :(得分:1)
有多种方法可以执行此操作,请选中https://laravel.com/docs/5.8/queries
但是一个简单的方法可以是:
UserCity::whereCityId(2)->count();
或者:
UserCity::where('city_id',2)->count();
答案 1 :(得分:0)
如果已正确设置它们之间的关系,则可以执行以下操作:
City::where('id', '=', 2)->withCount('users')->get();
它将在生成的模型上放置一个{relation} _count列,因此您可以像属性一样调用它:$city->users_count
让我知道这是否有帮助。
编辑:有关更多信息,您可以检查official documentation。
答案 2 :(得分:0)
如您在答案中所述,您拥有第三张表user_cities
。
如果您有表user_cities
,则将用户计数为
DB::table('user_cities')->where('city_id', '2')->count();
答案 3 :(得分:0)
尝试以下查询:
$count = City::where('id', 2)->whereHas('users')->count();
答案 4 :(得分:0)
确保您在模型中具有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');
}
}
现在在 Controller 中。
$citieswithcount = City::where('id', 2)->withCount('users')->first();
echo $citieswithcount->users_count;
exit;