我有3张彼此相关的表。
用户,客户,笔记
用户可以向客户添加备注。
备注表具有以下内容
id, user_id, client_id, note
在我的客户页面上“client / {id}”我正在打印为特定客户添加的所有注释。
但是,我无法从注释中的Users表中获取用户名。
它说当我试图提取发布该笔记的用户的名字时,试图获取非对象的属性。
ClientController
$client = Client::find($cid);
if (empty($client)) {
return Redirect::to('contact'); //redirect to contacts if contact not found
} else {
$this->layout->content = View::make('clients.show')->with('client', $client);
}
客户视图
@foreach ($client->notes as $note)
{{ $note->note }} //This works just fine.
Posted by: {{ $note->user->name }}
@endforeach
我的笔记模型:
public function user() {
return $this->belongsTo('User','user_id');
}
我的用户模型:
public function notes() {
return $this->hasMany('Note','user_id');
}
如果我尝试使用该功能,我可以执行类似
的操作$note->user()->get()
但是这将打印出用户行的整个数组(它是正确的数组)。
答案 0 :(得分:0)
我相信belongsTo
和hasMany
需要他们所指的模型的完整路径。
所以:
备注强>
public function user() {
return $this->belongsTo('App\User');
}
用户强>
public function notes() {
return $this->hasMany('App\Note');
}
答案 1 :(得分:0)
使用
找到问题的解决方法$note->user()->pluck('name')
不要以为这是最好的方法。虽然,它有效。
答案 2 :(得分:0)
尝试: 更改此行
$client = Client::find($cid);
要强>
$client = Client::find($cid)->load('notes.user');
或强>
$client = Client::find($cid)->with('notes.user')->get();