2016-10-31 75 views
1

我使用我的laravel 5.2角色和权限的委托,我有我的这个控制器上:访问集合中laravel 5.2

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

并获得:

$user = Auth::user(); 
    $rol = $user->roles; 
    dd($rol); 
在我的用户模型

这个:Snapshot

我tryng访问并显示“display_name”在我的看法,我不能,帮助! 在此先感谢。

回答

0

正如您在用户模型中定义的那样,用户可能具有多个角色(这意味着用户具有角色数组),因此您必须定义要显示哪个角色的display_name属性。我要显示给用户的所有可用角色DISPLAY_NAME属性,这可能喜欢的东西来实现:

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

我希望它有助于清除你的疑虑。

0

为了看到检查数据收集器使用$user = Auth::user()->with('roles')

数据使用dd($rol->toArray())

+0

错误:未定义的属性:Illuminate \ Database \ Eloquent \ Builder :: $ roles –

0

要获得用户逗号然后分离所有的角色,您可以use implode()为:

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

然后它给你Admin, Manager

0

因为我认为Laravel's Entrust库拥有多对多用户和角色之间的关系。 所以,如果你想显示在您的视图中的显示名称你已经来从你调用方法角色()获取集合项/对象 你可以做到这一点是:

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

或者如果你想获取第一RLE可以使用

$user_roles->first()->display_name

我希望这可以帮助你!

+0

它的工作原理,谢谢! –