我想要显示具有特定标签或类别的帖子,如我在标题中提到的;例如,我的一个帖子有3个标签"php"," laravel ","regex“我想要获得那些在多对多关系中具有laravel标签的帖子。
发布于 2017-09-24 20:58:30
首先,确保在模型上设置了正确的关系。然后使用Querying Relationship Existence。因此,您可以:
$posts = Post::whereHas('tags', function ($tags) use ($tagName) {
$tags->where('name', $tagName);
})
->whereHas('ORMRoute', functions ($routes) use ($routeName) {
$routes->where('route', $routeName);
})
->get();
发布于 2017-09-24 21:51:21
与whereHas相比,我更喜欢leftJoin,因为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();
https://stackoverflow.com/questions/46390011
复制相似问题