我想要显示标题中提到的具有特定标签或类别的帖子,例如,我的帖子中有一个标签“php”,“laravel”,“regex”我想获得那些有laravel标签的帖子在他们的多对多关系中。
答案 0 :(得分:1)
首先,确保您已在模型上设置了正确的关系,然后使用reference。所以,你可以
$posts = Post::whereHas('tags', function ($tags) use ($tagName) {
$tags->where('name', $tagName);
})
->whereHas('ORMRoute', functions ($routes) use ($routeName) {
$routes->where('route', $routeName);
})
->get();
答案 1 :(得分:1)
我更喜欢leftJoin而不是whereHas因为whereHas非常慢。
尝试此查询并查看差异:
$posts = Post::leftJoin('post_tags', 'post_tags.post_id', '=', 'posts.id')
->leftJoin('post_routes', 'post_routes.post_id', '=', 'posts.id')
->where('name', $tagName)
->where('route', $routeName)
->get();