大家! 我正在使用Laravel Spatie许可包。 这样我就可以获得用户的所有分配的权限。
$user->getAllPermissions()
但是,我想通过急切的加载获得所有权限。 也许是这样。
$users = User::with('getAllPermissions')->get();
但这没用。
我尝试了
$users = user::with('permissions')->get();
但是查询计数与
是相同的结果$users = user::get();
那么$user->getAllPermissions()
已经渴望加载查询了吗?
还是有急切需要加载的查询?
答案 0 :(得分:2)
要获得用户列表的所有许可是一件非常棘手的事情。
$users = user::with('permissions')->get();
这将为用户列表提供权限模型。这样,您将仅获得分配给用户的权限。但是用户具有角色,则不会添加角色权限。
但是$user->getAllPermissions();
函数将为您提供与用户角色和权限相关的所有权限。但是我们需要用户列表的所有许可。
我创建了一个Mutators函数来获取用户列表的权限。
public function getPermissionAttribute()
{
return $this->getAllPermissions();
}
现在您可以在模型中添加
protected $appends = [
'permission'
]
现在要避免进行递归查询,请像这样编写用户查询
$users = user::with(['permissions', 'roles'])->get();
或添加您的用户模型
protected $with =[
'permissions',
'roles'
]
我认为这会对您有所帮助。