获得在Laravel中没有特定标签的帖子?

时间:2019-12-16 13:03:24

标签: php laravel

我知道如何获取带有特定标签的所有帖子。但是当我想做相反的事情是行不通的。

我正在获得所有带有标签Laravel的帖子,如下所示:

Post::whereHas('tags', function ($q) {
          return $q->where('name', 'Laravel');
      })->orderBy('created_at', 'desc')->take(12)->get();

现在,我想获取所有其中没有标签Laravel的帖子。如果我这样做

Post::whereHas('tags', function ($q) {
          return $q->where('name', '!=','Laravel');
      })->orderBy('created_at', 'desc')->take(12)->get();

正在返回所有帖子。它没有按预期工作。因此,如何获取所有没有标签Laravel的帖子。

1 个答案:

答案 0 :(得分:3)

您可以使用whereDoesntHave

$posts = Post::whereDoesntHave('tags', function ($query) {
    $query->where('name', 'Laravel');
})->orderBy('created_at', 'desc')->take(12)->get();

与此相关,您将仅获得tags没有名称为Laravel的帖子。