无法在laravel

时间:2016-07-30 19:08:25

标签: php laravel-5.2 one-to-many

我有三个模型和相应的表格。用户,帖子,评论。 用户表的列是id,name,email。 帖子列表是id,title,body。 注释表的列是id,user_id,post_id,comment。

用户模型具有以下功能:

public function comments(){

        return $this->hasMany('App\Comment');
    }

Post model具有以下功能:

public function comments(){

        return $this->hasMany('App\Comment');
    }

评论模型具有以下两个功能:

 public function user(){

        $this->belongsTo('App\User');
    }

    public function post(){

        $this->belongsTo('App\Post');
    }

PostController中的单帖显示功能如下:

public function show($slug)
    {
        $post = Post::where('slug', $slug)->first();
        return view('post.show')->withPost($post);
    }

并在show.blade.php中尝试实现此功能:

@foreach($post->comments as $comment)
<p>
{{$comment->user->name}}
 </p>
@endforeach

为什么抛出错误说关系方法必须返回一个对象?

1 个答案:

答案 0 :(得分:0)

你需要return关系,所以你的代码变成了:

public function user(){
    return $this->belongsTo('App\User');
}

public function post(){
    return $this->belongsTo('App\Post');
}