1

从用户中删除所有角色的最佳或常用方法是什么?

我试过了

$roles = $user->getRoleNames(); $user->removeRole($roles);

Return value of App\User::getStoredRole() must implement interface Spatie\Permission\Contracts\Role, instance of Illuminate\Support\Collection returned

提前致谢

4

6 回答 6

5

像这样使用普通的 Laraveldetach方法:

$user->roles()->detach();

于 2018-10-10T22:02:08.343 回答
2

我现在是这样做的$user->removeRole($user->roles->first());

于 2018-10-10T11:24:14.323 回答
1

通过阅读文档,它清楚地表明您可以将Collection实例传递给,removeRole所以我认为您做对了。

assignRole、hasRole、hasAnyRole、hasAllRoles 和 removeRole 函数可以接受字符串、\Spatie\Permission\Models\Role 对象或 \Illuminate\Support\Collection 对象。

于 2018-10-10T09:14:46.507 回答
0

从 Spatie 文档中,您可以找到一种删除所有以前角色并分配新角色的简单方法

$user->syncRoles($roles);

作为参考,您可以访问此链接

于 2020-11-16T15:24:41.910 回答
0

即使在 Laravel 7 上也能正常工作

对于角色: $user->syncRoles([]);

对于权限: $user->syncPermissions([]);

于 2020-08-03T01:41:17.607 回答
0

您还可以通过同步到一个空数组来删除所有角色,就像这样。

$user->syncRoles([]);

我确认它适用于 5.8 版。

于 2019-07-23T12:50:12.057 回答