从用户中删除所有角色的最佳或通常方法是什么?
我尝试过
$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
预先感谢
答案 0 :(得分:2)
使用普通的Laravel detach
方法,如下所示:
$user->roles()->detach();
答案 1 :(得分:1)
从阅读文档可以清楚地看出,您可以将AbstractList$Itr
实例传递给 public E next() {
checkForComodification(); // will throw ConcurrentModificationException
// before the Iterator's state is changed
try {
int i = cursor;
E next = get(i);
lastRet = i;
cursor = i + 1;
return next;
} catch (IndexOutOfBoundsException e) {
checkForComodification();
throw new NoSuchElementException();
}
}
,所以我认为您做对了。
assignRole,hasRole,hasAnyRole,hasAllRoles和removeRole函数可以接受字符串,\ Spatie \ Permission \ Models \ Role对象或\ Illuminate \ Support \ Collection对象。
答案 2 :(得分:1)
我现在以这种方式$user->removeRole($user->roles->first());
答案 3 :(得分:0)
您还可以通过同步到一个空数组来删除所有角色。
$user->syncRoles([]);
我确认它有效。
答案 4 :(得分:0)
即使在Laravel 7上也可以正常工作
对于角色:
words[i-1]
对于权限:
$user->syncRoles([]);
答案 5 :(得分:0)