Laravel获取数据一对多与条件的关系

时间:2018-09-09 16:37:15

标签: php laravel laravel-5.5

如何在视图中显示与条件有太多关系的数据。

我有一篇博文中有评论,但是此评论的条件是未发布。

这里是我的Post模型

...

public function comments()
{
    return $this->hasMany(Comment::class);
}
...

在上面的代码中,我可以简单地使用$post->comments来显示所有注释。

就像我之前说的,我只需要显示已发布的评论为true

但是如何添加条件?...

2 个答案:

答案 0 :(得分:1)

您只能使用
获得发布的评论 $this->post->comments()->where('published', true)->get()

检查Documentation

  

当然,由于所有关系也都可以用作查询构建器,因此可以通过调用comment方法并继续将条件链接到查询上来为检索注释添加更多约束:$comment = App\Post::find(1)->comments()->where('title', 'foo')->first();

答案 1 :(得分:1)

您可以通过获取带有已发布评论的帖子来实现此目的;

$post = Post::where('id', $id)->with('comments', function ($q) { 
     $q->where('published', true);
})->first(); 

然后在视图中调用$ post-> comments时,只会得到已发布的注释。

或者,如果您确实愿意,可以更新模型以使其具有已发布的注释关系,但这是不建议的。

public function publishedComments()
{
    return $this->hasMany(Comment::class)->where('published', true);
}