我正在尝试获取用户拥有的所有权限。
权限模型
public function roles()
{
return $this->belongsToMany("App\Models\Role");
}
角色模型
public function users()
{
return $this->belongsToMany('App\Models\User');
}
public function permissions()
{
return $this->belongsToMany("App\Models\Permission");
}
用户模型
public function roles()
{
return $this->belongsToMany('App\Models\Role', 'role_user', 'user_id', 'role_id');
}
我想要用户拥有的所有权限。
用户可以具有viva用户权限
答案 0 :(得分:2)
您需要在控制器中编写类似的内容。
$users = User::with(['roles', 'roles.permissions', 'permissions'])->get();
这将返回roles
和permissions
的所有权限。
查看:
foreach($user->roles as $role) {
foreach($role->permissions as $permission){
{{ $permission->name }}
}
}
答案 1 :(得分:2)
让我们说您的层次结构是User
hasMany
Role
和Role
hasMany
Permission
。
然后,应在模型中像这样设置您的关系。
public function roles() {
return $this->hasMany('App\Models\Role`);
}
public function permissions() {
return $this->hasMany('App\Models\Permission`);
}
User::find(1)->load('roles.permissions')
答案 2 :(得分:0)
要获取用户拥有的所有权限,只需运行即可
$users = User::with(['roles.permissions'])->get();
要使用权限,您需要遍历以下角色:
foreach($user->roles as $role) {
var_dump($role->permission);
}
答案 3 :(得分:0)
工作正常
$ users = User :: with([['roles.permissions'])-> get()-> find(2);
输出
{
"status": false,
"response": {
"errors": {
"id": 2,
"vender_id": 1,
"name": "zubair",
"email": "ts@gmail.com",
"email_verified_at": null,
"created_at": "2019-06-17 08:11:25",
"updated_at": "2019-06-17 08:11:25",
"roles": [
{
"id": 1,
"vender_id": 1,
"name": "product-manager",
"display_name": "Product Manager",
"description": "Product Manager",
"created_at": "2019-06-17 08:11:56",
"updated_at": "2019-06-17 08:11:56",
"pivot": {
"user_id": 2,
"role_id": 1
},
"permissions": [
{
"id": 1,
"name": "add-role",
"display_name": "Add Role",
"description": "Add Role",
"created_at": "2019-06-17 08:20:09",
"updated_at": "2019-06-17 08:20:09",
"pivot": {
"role_id": 1,
"permission_id": 1
}
}
]
}
]
}
}
}
但是当我尝试访问权限时 属性[权限]在此集合实例上不存在。 在Collection.php中
答案 4 :(得分:0)
您可以在用户和角色之间的关系中使用“ with(“ permission”)“:
public function roles()
{
return $this->belongsToMany('App\Models\Role')->with("permissions");
}