Laravel从帖子中获取用户

时间:2016-08-23 14:34:13

标签: php laravel laravel-4 eloquent relationships

我有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()

但是这将打印出用户行的整个数组(它是正确的数组)。

3 个答案:

答案 0 :(得分:0)

我相信belongsTohasMany需要他们所指的模型的完整路径。

所以:

备注

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();