2017-08-11 111 views
2

我有奇怪的问题。 dd(),它表明我得到的数据,但我不能从表中显示单个记录。Laravel。我无法显示关系数据

我想对我的角色的名字,但我得到这个错误:

属性[名]不上这个集合实例中存在

模式 - 用户

public function roles() 
{ 
    return $this->belongsToMany(Role::class); 
} 

控制器

$users = User::with('roles')->get(); 
return view('pages.user', compact('users')); 

查看

@foreach($users as $user) 
     {{$user->id}} 
     <br> 
     {{$user->name}} 
     <br> 
     {{$user->email}} 
     <br> 
     {{$user->roles->name}} //this not working 
     <br> 
     <br> 
    @endforeach 

时,即时通讯使用{{$user->roles}}我得到

{ “ID”:1, “名”: “管理”, “说明”:“这是admin“,”pivot“:{”user_id“:2,”role_id“:1}}]

我做错了什么? Thx寻求帮助。

+0

也许是{{$ user-> name}}有问题 –

回答

1

$user->roles返回一个集合,因为它定义为belongsToMany关系,您不能从其访问name

要么你必须遍历集合或获得第一个。

$user->roles->first()->name

@foreach ($user->roles as $role) 
    {{ $role->name }} 
@endforeach 
+0

它的工作,thx你非常;) – funfelfonfafis

1

$user->roles是元素的集合,你正在试图获得元素列表上的属性。

例如,您可以使用implode来显示所有角色逗号分隔。

{{ $user->roles->implode('name', ', ') }}