我正在尝试显示已登录用户的联系人列表。但显然我做错了。
我在联系人列表页面上收到错误:
尝试获取非对象的属性“名称”
user.php的
public function contacts()
{
return $this->belongsToMany(Contact::class);
}
Contact.php
public function users()
{
return $this->belongsToMany(User::class);
}
ContactsController.php
public function index()
{
//
$user = Auth::user();
$user_contacts = $user->contacts()
return view('contacts.list')->with('contacts', $user_contacts);
}
list.blade.php
@foreach ($contacts as $contact)
* {{ $contact->name }} <br>
@endforeach
<小时/> 表模式:
用户:
contact_user:
答案 0 :(得分:2)
如果您想访问多对多关系表的数据透视属性,可以使用pivot
访问
@foreach ($contacts as $contact)
* {{ $contact->pivot->name }} <br>
@endforeach
还会在联系人与用户之间建立关系
public function contacts()
{
return $this->belongsToMany(Contat::class)->withPivot(['your', 'pivot','columns']);
}
希望这有帮助
答案 1 :(得分:0)
您必须按照以下关系返回数据透视表的数据:
public function contacts()
{
return $this->belongsToMany(Contat::class)->withPivot(['your', 'pivot','columns']);
}
你必须得到如下的关系数据:
$user_contacts = $user->contacts // Not $user->contacts()
答案 2 :(得分:0)
在您的控制器中,您有以下内容;
public function index()
{
$user = Auth::user();
$user_contacts = $user->contacts()
return view('contacts.list')->with('contacts', $user_contacts);
}
需要如下;
public function index()
{
$user = Auth::user();
$user_contacts = $user->contacts
return view('contacts.list')->with('contacts', $user_contacts);
}
使用$user->contacts()
(方法)将返回该关系的查询构建器实例,其中$user->contacts
(属性)将返回一个包含select查询结果的集合。