Php Laravel查找在角色中选择的权限
在我的web应用程序中,我有两个表Php Laravel查找在角色中选择的权限,php,laravel,Php,Laravel,在我的web应用程序中,我有两个表角色和权限,我可以将每个权限与角色表同步 我想找出哪些权限在角色的权限中,因为选择了“然后进入视图”,例如,我有10个权限,其中四个项目与角色表同步,我想找出它们 $role=role::with('permission')->whereId($id)->first(); $permissions=Permission::all(); dd($role,$role->permission()); 输出为: App\Entities\Role {#1816 ▼
角色
和权限
,我可以将每个权限
与角色
表同步
我想找出哪些权限在角色的权限中,因为选择了“然后进入视图”,例如,我有10个权限,其中四个项目与角色
表同步,我想找出它们
$role=role::with('permission')->whereId($id)->first();
$permissions=Permission::all();
dd($role,$role->permission());
输出为:
App\Entities\Role {#1816 ▼
...
#relations: array:1 [▼
"permission" => Illuminate\Database\Eloquent\Collection {#1814 ▼
#items: array:2 [▼
0 => App\Entities\Permission {#1829 ▼
...
#attributes: array:5 [▼
"id" => 4
"name" => "create-comment"
"label" => "user can create a comment"
...
]
...
}
1 => App\Entities\Permission {#1826 ▶}
]
}
]
...
}
Illuminate\Database\Eloquent\Collection {#1812 ▼
#items: array:3 [▼
0 => App\Entities\Permission {#1820 ▼
...
#attributes: array:5 [▼
"id" => 4
"name" => "create-comment"
"label" => "user can create a comment"
...
]
...
}
1 => App\Entities\Permission {#1828 ▶}
2 => App\Entities\Permission {#1827 ▶}
]
}
如您所见,“创建评论”权限在角色的权限中,我如何才能找到它们
例如:
$role=role::with('permission')->whereId($id)->first();
$permissions=权限::get();
dd($role->hasPermission($permissions));
类角色扩展模型
{
...
公共函数hasPermission($permission)
{
//返回角色中的权限
}
}
或使用包含:
@foreach($permissions as$permission)
权限->包含('id',$permission->id)selected=“selected”@else'@endif>
{{$permission->name}{{{$permission->label}
@endforeach
刀片中的此代码解决了我的问题:
@foreach($permissions as$permission)
权限->包含('id',$permission->id)selected=“selected”@else'@endif>
{{$permission->name}({{$permission->label})
@endforeach
在您的代码中,$permissions
是一个集合,而不是单个的权限
,因此haspmissions()
与传递$permissions
不兼容。您可以执行$permission=permission::where('name','create comment')->first()
,然后您可以通过两种方法查看您的角色是否具有创建注释
权限,例如contains()
或first(function(){…})
@timleif我应该在数组或集合中搜索该权限,例如:@if($role->permission->contains('id',$permission->id))
$role->permission
是一个集合(虽然它应该是$role->permissions
,但因为有很多,变量命名应该始终表示所包含的内容,$role->permission
是单数,所以不匹配)是的,这是总的想法。