【问题标题】:How to get list of permissions in a role如何获取角色中的权限列表
【发布时间】:2017-10-07 04:19:45
【问题描述】:

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

管理员:

  • create.users
  • 删除.users
  • edit.users

我该怎么做?这是我的带有字段的表格:

角色


标识 |姓名 |蛞蝓 |等级 |



权限


标识 |姓名 |蛞蝓 |



permission_role


标识 |许可ID |角色 ID |


【问题讨论】:

    标签: laravel-5 eloquent relationship foreign-key-relationship


    【解决方案1】:

    首先,您需要一个控制器来处理这个问题。控制器必须能够获得角色,然后它需要由角色照顾权限,然后获得权限。

    所以它看起来像这样;

    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
    

    希望这能满足您的需要。

    【讨论】:

    • 我会试试你的解决方案
    • 很高兴为您提供帮助!祝你好运。
    • 啊! :) arigato
    • 还有一点,lists()方法有什么用?是返回数据库field吗?
    • 我的意思是那个字段的值?
    【解决方案2】:

    在角色模型文件中建立关系

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

    【讨论】:

    • 我会试试的先生。
    • 嗯它返回 Collection {#217 ▼ #items: [] } 但我的数据库中有 1 条记录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2013-07-27
    • 2014-02-03
    • 1970-01-01
    相关资源
    最近更新 更多