Laravel подсчитывать пользователей по ролям - PullRequest
0 голосов
/ 25 августа 2018

Я использую пакет доверия По сути, я просто хочу посчитать пользователей по ролям примерно так:

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

естественно то, что я получаю, это количество пользователей с ролями, но я пытаюсь получить что-то вроде этого ...

ожидается

**roles          count**

 admin             4
 user              2
$role_name     $User_withthisRole_count

Отредактировано: я хочу что-то динамическое, я не хочу добавлять роли вручную

не уверен, что делать ..

Ответы [ 5 ]

0 голосов
/ 26 августа 2018

Мне нужно было выполнить необработанный запрос, спасибо всем за помощь

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") )
0 голосов
/ 25 августа 2018

Использование withCount():

$roles = Role::withCount('users')->get();
foreach($roles as $role) {
    // $role->users_count
}
0 голосов
/ 25 августа 2018

Использование Laravel groupBy

User::select('roles', DB::raw('count(*) as count'))
->groupBy('roles')
->get();
0 голосов
/ 25 августа 2018

Вы можете сделать что-то вроде этого:

    $roles = Role::pluck('name');

    foreach ($roles as $roleName) {
        $userCount = User::whereHas('roles', function($query) use($roleName) {
            $query->where('name', $roleName);
        })->count();
    }
0 голосов
/ 25 августа 2018
$users = User::where('roles','user')->count();
$admins = User::where('roles','admin')->count();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...