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條記錄在我的數據庫 –