代码之家  ›  专栏  ›  技术社区  ›  Dicky Raambo

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

  •  0
  • Dicky Raambo  · 技术社区  · 6 年前

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

    我有一篇博文有评论,但这个评论有一个条件,发表或不发表。

    这是我的 Post 模型

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

    $post->comments 显示所有评论。

    true

    但是如何添加条件呢?。。。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Simon R    6 年前

    你可以通过发布评论来实现这一点;

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

    或者,如果您真的想更新您的模型,您可以有一个发布的评论关系,但这是不太建议。

    public function publishedComments()
    {
        return $this->hasMany(Comment::class)->where('published', true);
    }
    
        2
  •  1
  •   Daniel    6 年前

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

    检查 Documentation

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