首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel找出在角色中选择了哪些权限

Laravel找出在角色中选择了哪些权限
EN

Stack Overflow用户
提问于 2020-10-21 23:51:35
回答 1查看 72关注 0票数 0

在我的web应用程序中,我有两个表rolepermission,我可以将每个permissionrole表同步

我想找出哪些权限在角色的权限中,因为选择了then in视图,例如我有10个权限,其中四个项目与role表同步,我想找出它们

代码语言:javascript
复制
$role = Role::with('permission')->whereId($id)->first();
$permissions = Permission::all();
dd($role,$role->permission());

输出为:

代码语言:javascript
复制
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 ▶}
  ]
}

你可以看到"create-comment"权限在角色的权限中,我怎么才能找到它们呢?

例如:

代码语言:javascript
复制
$role = Role::with('permission')->whereId($id)->first();
$permissions = Permission::get();

dd($role->hasPermission($permissions));


class Role extends Model
{
    ...
    public function hasPermission($permission)
    {
        //return which permissions are in role
    }
}

或者使用contains

代码语言:javascript
复制
@foreach($permissions as $permission)
    <option value="{{$permission->id}}" @if($role->permission->contains('id',$permission->id)) selected="selected"  @else '' @endif>
        {{$permission->name}} {{$permission->label}}
    </option>
@endforeach
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-22 00:12:36

下面这段Blade代码解决了我的问题:

代码语言:javascript
复制
@foreach($permissions as $permission)
    <option value="{{$permission->id}}" @if($role->permission->contains('id',$permission->id)) selected="selected"  @else '' @endif>
        {{$permission->name}} <span class="text-danger">({{$permission->label}})</span>
    </option>
@endforeach
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64467311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档