我正在使用委托包 基本上,我只想基于这样的角色来统计用户:
$users = User::whereHas('roles')->count();
dd($users);
自然,我得到的是具有角色的用户数,但是我想要得到的是类似这样的东西。
预期
**roles count**
admin 4
user 2
$role_name $User_withthisRole_count
已编辑: 我想要动态的东西,我不想手动添加角色
不确定该怎么办。
答案 0 :(得分:1)
$users = User::where('roles','user')->count();
$admins = User::where('roles','admin')->count();
答案 1 :(得分:1)
User::select('roles', DB::raw('count(*) as count'))
->groupBy('roles')
->get();
答案 2 :(得分:1)
您可以执行以下操作:
$roles = Role::pluck('name');
foreach ($roles as $roleName) {
$userCount = User::whereHas('roles', function($query) use($roleName) {
$query->where('name', $roleName);
})->count();
}
答案 3 :(得分:0)
使用withCount()
:
$roles = Role::withCount('users')->get();
foreach($roles as $role) {
// $role->users_count
}
答案 4 :(得分:0)
我不得不做一个原始查询,谢谢大家的帮助
DB::select( DB::raw("select name,count(name) AS count,display_name from roles a,
role_user b where a.id=b.role_id group by name") )
答案 5 :(得分:0)
这对我有用
$roles = User::where('role_id',$roles->id)->count();
我的关系是一对多的