列出不属于某个角色的用户

问题描述 投票:0回答:4

我使用 laravel spatie 包来获取用户权限。我需要列出不属于特定用户的所有用户。例如列出所有非管理员(角色)用户。

列出我使用的所有管理员用户

$users = App\User::role('admin');

我需要与此相反的

laravel laravel-5 laravel-permission
4个回答
6
投票

尝试这样:

return $this->users()->whereHas('roles', function ($query) {
    return $query->where('name','!=', 'admin');
})->first();

3
投票

您可以进行 2 次查询来获取您想要的两组用户。我的意思是:

1 ) 没有任何角色的用户。

User::whereDoesntHave('roles')->count()

2)用户有任何角色,但没有管理员(来自 Adam Kozlowski 的回答)

$this->users()->whereHas('roles', function ($query) {
    $query->where('name','!=', 'admin');
})->first();

0
投票

正如其文档所述,您可以使用:

$users = User::role('writer')->get(); // Returns only users with the role 'writer'

角色作用域可以接受字符串、\Spatie\Permission\Models\Role 对象或 \Illuminate\Support\Collection 对象。

只需将要查询的角色放入集合即可。


0
投票

这为我解决了这个问题 $all_roles_ except_a_and_b = 角色::whereNotIn('姓名', ['角色 A', '角色 B'])->get();

© www.soinside.com 2019 - 2024. All rights reserved.