Laravel按角色计数用户

时间:2018-08-25 10:09:31

标签: laravel

我正在使用委托包 基本上,我只想基于这样的角色来统计用户:

    $users = User::whereHas('roles')->count();
    dd($users);

自然,我得到的是具有角色的用户数,但是我想要得到的是类似这样的东西。

预期

**roles          count**

 admin             4
 user              2
$role_name     $User_withthisRole_count

已编辑: 我想要动态的东西,我不想手动添加角色

不确定该怎么办。

6 个答案:

答案 0 :(得分:1)

$users = User::where('roles','user')->count();
$admins = User::where('roles','admin')->count();

答案 1 :(得分:1)

使用Laravel groupBy

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();

我的关系是一对多的