返回所有行,即使where中的关系为空



我有两个表Posts和Categories,我正试图用手风琴来显示它们。每个类别中的类别和帖子。我可以使用Category::with('posts'(来完成。

问题(我需要帮助的地方(是当我试图过滤帖子时。我有这个代码:

$data = Category::with('posts')->whereHas('posts.creator', function($query) use ($filteruser) { 
$query->where('id',=, $filteruser);
});

问题是:

  • 我希望所有类别仍然返回显示,即使没有返回帖子(在过滤器之后(。我上面的代码不能做到这一点,我想不出该怎么做
  • 如果类别1有一个帖子与过滤器匹配,那么它也将返回同一类别中的所有其他帖子。我只想显示与筛选器匹配的帖子

这些可能吗?

假设posts有一列user_id,它将它与创建者记录相关联。

尝试

$data = Category::with(['posts' => function($query) use ($filteruser) {
$query->with('creator')->where('user_id', $filteruser);
}])
->get();

最新更新