0

我使用Romanbican/Roles laravel包,我有permission_role表,roles表,permissions表。现在,我想要获得特定role的所有permissions。例如(作用:Admin,权限:create.usersdelete.usersedit.users其结果将是:

联系:如何获得的权限列表中的一个角色

  • create.users
  • delete.users
  • edit.users

我该怎么做?这里是我的表与字段:

角色


ID |名称| slug | level |



权限


ID |名称| slug |



permission_role


ID | permission_id | role_id |在角色模型文件

public function permissions() 
{ 
    return $this->belongsToMany(Permissions::class, 'permission_role', 'role_id', 'permission_id ') 
} 

回答

1

首先,


+0

我会尝试你的解决方案 –

+0

哇!它工作的男人,真棒! –

+0

很高兴帮助!祝你好运。 – Robin

0

制作的关系,你需要一个控制器来处理这个问题。控制器必须能够获得角色,然后需要通过角色来管理权限,然后获得权限。

所以它看起来像这样;

public function editRolePerms($id) 
    { 
     $getrole = Role::findOrFail($id); 

     $permbyrole = DB::table('permission_role')->select('permission_id')->where('role_id', $id)->lists('permission_id'); 

     $getperms = Permission::all(); 

     return view('your_view')->with('role', $getrole)->with('getperms', $getperms)->with('permbyrole', $permbyrole); 
    } 

这将是控制器,即可获得由视图中的角色烫发,它会是这个样子:

@foreach($getperms as $perm) 
<tr> 
    <td>{{ $perm->name }}</td> 
    <td>{{ $perm->description }}</td> 
    @if(!in_array($perm->id, $permbyrole)) 
     <td><span id="{{ $perm->id }}" class="label label-danger">Not enabled</span></td> 
     <td><input onclick="toggleRole({{ $perm->id }}, {{ $role->id }})" type="checkbox" id="checkbox_{{ $perm->id }}"></td> 
    @else 
     <td><span id="{{ $perm->id }}" class="label label-success">Enabled</span></td> 
     <td><input onclick="toggleRole({{ $perm->id }}, {{ $role->id }})" type="checkbox" checked="true" id="checkbox_{{ $perm->id }}"></td> 
    @endif 
</tr> 
@endforeach 

希望这会适合您的需要。

+0

我会试试先生。 –

+0

嗯它返回'集合{#217▼ #items:[] }'但我有1条记录在我的数据库 –