我正在尝试查找各种posts
中的所有categories
。
我有与Post
相关的Category
和belongsToMany()
模型
如下:
发布
public function categories()
{
return $this->belongsToMany('App\Category');
}
类别
public function posts()
{
return $this->belongsToMany('App\Post');
}
在两者之间有数据透视表category_post
,所有关系都可以很好地工作。
我遇到的问题如下。当user
查看post
时,我想显示相关的posts
,为此,我想显示与{属于同一posts
的{{1}} {1}}。
如果我执行以下操作:
categories
我恢复了第一个post
的帖子,但该帖子具有更多的关联$post = Post::where('slug',$slug)->first();
$relateds = $post->categories->first()->posts()->get();
。我需要所有帖子。
我尝试过:
category
还有一些类似的东西,但是没有用。
请问正确的方法是什么?
谢谢。
答案 0 :(得分:1)
您可以使用posts
构建器上的whereHas()
雄辩的方法来获取所有相关的Post
。
$post = Post::where('slug',$slug)->first();
$category_ids = $post->categories->pluck('id')->all();
$related = Post::whereHas('categories', function($query) use ($category_ids) {
$query->whereIn('id', $category_ids);
})->get();
在这里,我们首先得到$post
。然后我们获得category
的所有$post
ID。
最后,我们使用posts
构建器方法在category
变量中找到id
和$category_ids
并在其中whereHas()
中找到所有whereIn()
(接着是bot.check
查询方法。
我希望这会有所帮助。