Laravel Eloquent一对多的关系

时间:2014-03-21 17:55:36

标签: laravel eloquent

我有发表和评论表。我希望获得所有帖子及其评论,以及下面的回复只是发表评论:

Post::with('comments') 

更新

例如

post_table

id post


1 post1

2 post2

评论表

id post_id comment


1 1 sapmle_comment

Post :: with('comments')只返回有评论的帖子,它只返回第一篇帖子,因为第二篇帖子没有评论,我想得到所有帖子(有或没有评论)

2 个答案:

答案 0 :(得分:0)

您的问题不够明确,但要获得评论的所有帖子,您可以尝试这样做:

$posts = Post::with('comments')->get();

要获得只有评论的帖子,您可以尝试这样做:

$posts = Post::has('comments')->get();

答案 1 :(得分:0)

我不太确定你的问题是什么,但我认为它没有回复你的评论。如果您无法退回没有评论的帖子,谢赫的回答将对您有用。如果您无法检索每个帖子的评论,则应确保您的模型已定义:

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

然后确保您的评论模型有:

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

如果您想通过控制器将其传递给您的视图,您可以:

$comments = $post->comments()->orderBy('created_at')->get();
return View::make('view', compact('comments'));

您可以通过以下方式遍历每条评论:

@foreach ($comments as $comment)
     {{$commment->content}}
@endforeach