假设我使用数据透视表user
表,我有表roles
和role_user
有很多关系。
我在模型上使用belongstomany
关系
如何制作一个有说服力的查询来计算有多少用户拥有角色admin
和staff
答案 0 :(得分:1)
解决。
将此内容添加到Role.php
模型
public function userCount() {
return $this->belongsToMany(Role::class)
->selectRaw('count(role_user.user_id) as total_user')
->groupBy('role_id');
}
和这个
public function getUserCountAttribute()
{
if ( ! array_key_exists('userCount', $this->relations)) $this->load('customerCount');
$related = $this->getRelation('userCount')->first();
return ($related) ? $related->total_user : 0;
}
之后,进行雄辩的查询...
$roleUsers = Role::with('userCount')->orderBy('id', 'asc')->get();