2016-05-15 101 views
1

我一直在使用雄辩只是一会儿,我无法弄清楚如何完成这一点。假设我有通常的帖子,用户和评论关系,并且我想返回列表中的所有帖子和也指示登录的用户评论过哪些帖子。Laravel雄辩得到所有与约束的关系

通过查询与whereHas()with()我已经能够返回与用户的评论文章,或与所有用户的意见的所有帖子。但我怎么会得到所有帖子只有 auth用户的评论?甚至只是一个布尔值,表示用户评论的存在。

我觉得这应该是非常直接的,我只是无法在文档或这些板上找到答案。

回答

0

也许是这样的:

$posts = Post::whereHas('comments',function($commentQuery){ 
      $commentQuery->whereHas('user',function($userQuery){ 
       $userQuery->where('id',Auth::user()->id); 
      }); 
     })->get(); 
+0

好像答案是某种嵌套查询的,但是这一次仍然只返回的帖子与认证/的评论,而不是休息。 –

+0

@JonathanMarasco我想我误解了这个问题。要确定你想知道某个'Post'对象是否有被认证用户发布的评论,是否正确? –

+0

谢谢你看看这个。是的,这是正确的 - 我想返回一个_all_帖子的列表,其中_only_是由auth用户指定的带有评论的帖子。根据文档'whereHas()'“向查询添加一个计数/存在条件”,这会限制结果。我认为我需要的是更像'with()'这种渴望加载关系的东西,但据我所知它不需要任何参数。 –