如何显示角色在laravel 5委托中拥有的所有权限


How to display all permissions a role has in laravel 5 entrust?

因此,我想显示特定角色所具有的所有权限。我写了这样的代码:

公共函数index(){$role=role::first();$binding=$role->perms->toArray();dd($binding);//返回视图('binding.index',compact('binding'));}
因此,基本上dd给出:
数组:1[▼0=>数组:7[▼"id"=>1"name"=>"创建新闻"display_name"=>"创建新闻"description"=>"/news/{news}/create"created_at"=>"2015-02-21 12:29:28"updated_at"=>"2015-02-21 12:30:21"pivot"=>数组:2[▶]]]
这是::first()(一个角色)的结果。所以,总而言之,$binding是一个角色数组,每个角色都是一个权限数组。如何从这样的变量中传递和提取数据?所需的示例结果:角色:用户权限:查看新闻;角色:管理员权限:创建新闻,编辑新闻。

或者它只是两个嵌套的foreach循环?

此外,我注意到对于Role::all();我得到错误未定义的属性:Illuminate''Database''Eloquent''Collection::$perms。为什么,我没有得到角色::first();的错误;?

您可以加载所有角色(也已经渴望加载保存数据库查询的权限):

$roles = Role::with('perms')->get();

然后将其传递给您的视图:

return view('binding.index', compact('roles'));

然后在那里循环:

@foreach($roles as $role)
    @foreach($role->perms as $permission)
        {{ $permission->someproperty }}
    @endforeach
@endforeach

当然,如果你想把它作为一个数组,你也可以直接调用$roles->toArray()。权限将嵌套在每个角色中。


有关热切加载的更多信息

在laravel 5.3 中检索分配给角色的权限的不同方法

解决方案1:

Role::where('name', $roleParam)->first()->perms;

注意:权限名称可以是存在于权限表中的任何名称,如下面的

$roleParam="添加用户";

解决方案2:

$roleObj = Role::where('name', $roleParam)->first();
return $this->response->array($roleObj->perms);

此解决方案可与Dingo路由器帮助程序配合使用:-)因此,您必须在基本控制器中使用帮助程序,如下所述。

use Dingo'Api'Routing'Helpers;
class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests, Helpers;
}