laravel 5.2中的访问集合

时间:2016-10-31 23:43:32

标签: php laravel laravel-5 eloquent laravel-5.2

我在laravel 5.2上使用委托我的角色和权限,我在我的控制器上有这个:

$user = Auth::user();
    $rol = $user->roles;
    dd($rol);

在我的用户模型中:

 public function roles(){
    return $this->belongsToMany('Nini\Role','role_user');
}

得到这个:Snapshot

我尝试访问并显示" display_name"在我看来,我无法帮助! 提前谢谢。

4 个答案:

答案 0 :(得分:0)

正如您在User模型中定义的那样,用户可以拥有多个角色(这意味着用户拥有一组角色),因此您必须定义要显示display_name属性的角色。我想为用户显示所有可用角色的display_name属性,这可以通过以下方式实现:

@foreach (Auth::user()->roles as $rol)
  $rol->display_name
@endforeach

我希望有助于消除您的疑虑。

答案 1 :(得分:0)

要查看控制器使用$user = Auth::user()->with('roles')

中的数据

使用dd($rol->toArray())进行检查数据收集,

答案 2 :(得分:0)

要以逗号分隔用户的所有角色,您可以use implode()为:

$rol->implode('display_name', ', ');

然后它会给你Admin, Manager

答案 3 :(得分:0)

我认为 Laravel's Entrust 库在用户和角色之间存在多对多的关系。 因此,如果您想在视图中显示显示名称,您需要从调用方法 roles()中获取集合中的项目/对象 你可以这样做:

<img src="<YOUR_URL>/my_logo.gif"....

或者如果你想获取第一个rle,你可以使用

// Collection of Roles $user_roles = $user->roles; foreach($user_roles as $user_role) { echo $user_role->display_name; }

我希望这可以帮到你!