显示具有特定标签或类别的帖子

时间:2017-09-24 12:25:51

标签: php sql laravel

我想要显示标题中提到的具有特定标签或类别的帖子,例如,我的帖子中有一个标签“php”,“laravel”,“regex”我想获得那些有laravel标签的帖子在他们的多对多关系中。

2 个答案:

答案 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();