将 Laravel 8 与 spatie 包一起使用尝试获取具有角色问题的用户列表调用未定义的方法 App\Models\User::hasAllRoles()
using Laravel 8 with spatie package try to get user list with role issue Call to undefined method App\Models\User::hasAllRoles()
我正在尝试获取用户列表及其在 laravel 8 中的角色,为了获得角色和许可,我使用 spatie 包 (https://spatie.be/docs/laravel-permission/v4/)
我正在尝试通过用户获取任何数据 return 错误
以下函数return错误
$all_users_with_all_their_roles = User::with('roles')->get();
$all_users_with_all_direct_permissions = User::with('permissions')->get();
$user->hasAllRoles(Role::all());
函数 (https://spatie.be/docs/laravel-permission/v3/basic-usage/basic-usage#eloquent)
ERROR : "Call to undefined method App\Models\User::getAllPermissions()",…}
我认为用户模型中缺少某些东西。
请帮忙解决这个问题
TIA
通知:
User::all()
和 User::where(..)->get()
的结果是 laravel eloquent collection 的实例,而不是用户模型的实例。
解决方案:
在你的 collection 上使用 first()
或循环使用它。
$all_users_with_all_their_roles = User::with('roles')->get();
$all_users_with_all_direct_permissions = User::with('permissions')->get();
// Use for example first() to get the first user instance from collection
$user->first()->hasAllRoles(Role::all());
// Or loop over it
foreach($all_users_with_all_direct_permissions as $user){
$user->hasAllRoles(Role::all());
}
我想你忘了给用户添加特征 class:
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable {
use HasRoles;
// ...
}
如果你没有忘记 trait,那么使用下面的代码获取所有用户 roles
和 permissions
.
$users = User::all();
$user_roles = [];
$user_permissions = [];
if($users) {
foreach ($users AS $user) {
$user_roles[$user->id] = $user->getRoleNames();
$user_permissions[$user->id] = $user->getAllPermissions();
}
}
FMI SEE:https://spatie.be/docs/laravel-permission/v3/basic-usage/basic-usage
我正在尝试获取用户列表及其在 laravel 8 中的角色,为了获得角色和许可,我使用 spatie 包 (https://spatie.be/docs/laravel-permission/v4/)
我正在尝试通过用户获取任何数据 return 错误
以下函数return错误
$all_users_with_all_their_roles = User::with('roles')->get();
$all_users_with_all_direct_permissions = User::with('permissions')->get();
$user->hasAllRoles(Role::all());
函数 (https://spatie.be/docs/laravel-permission/v3/basic-usage/basic-usage#eloquent)
ERROR : "Call to undefined method App\Models\User::getAllPermissions()",…}
我认为用户模型中缺少某些东西。
请帮忙解决这个问题
TIA
通知:
User::all()
和 User::where(..)->get()
的结果是 laravel eloquent collection 的实例,而不是用户模型的实例。
解决方案:
在你的 collection 上使用 first()
或循环使用它。
$all_users_with_all_their_roles = User::with('roles')->get();
$all_users_with_all_direct_permissions = User::with('permissions')->get();
// Use for example first() to get the first user instance from collection
$user->first()->hasAllRoles(Role::all());
// Or loop over it
foreach($all_users_with_all_direct_permissions as $user){
$user->hasAllRoles(Role::all());
}
我想你忘了给用户添加特征 class:
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable {
use HasRoles;
// ...
}
如果你没有忘记 trait,那么使用下面的代码获取所有用户 roles
和 permissions
.
$users = User::all();
$user_roles = [];
$user_permissions = [];
if($users) {
foreach ($users AS $user) {
$user_roles[$user->id] = $user->getRoleNames();
$user_permissions[$user->id] = $user->getAllPermissions();
}
}
FMI SEE:https://spatie.be/docs/laravel-permission/v3/basic-usage/basic-usage