极端关系错误

时间:2016-01-29 15:16:08

标签: laravel-5 frameworks

我创建了一个帖子表&评论表的帖子评论。 我想用他们的评论来发表我的帖子......

在我的帖子模型中:

public function comments()
{
     return $this->hasMany('App\Comment');
}

在我的评论模型中:

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

这是我的控制器:

public function show($ID)
{
    try {
        $post = Post::findOrFail($ID);
        $comments = Post::find($ID)->comments;
        $randomPosts = Post::all()->random(3);
        return view('show', compact('post','comments','randomPosts'));
    } catch (ModelNotFoundException $e) {
        $posts = Post::orderBy('ID', 'DESC')->paginate(5);
        return view('welcome', compact('posts'));            
    }
}

但是我收到了这个错误: 未定义属性:Illuminate \ Database \ Eloquent \ Collection :: $ ID

我的问题是什么?

1 个答案:

答案 0 :(得分:0)

您需要将$ ID变量分配给您要检索帖子的ID

例如,假设你想要一个id为1的帖子及其评论。

首先,您可以检索第一篇文章的评论,如下所示:

$comments = App\Post::find(1)->comments;

foreach ($comments as $comment) {
    echo $comment
}

当然你可以检索帖子代表一条评论。

例如,发表第一条评论的帖子:

$comment = App\Comment::find(1);

echo $comment->post->title;