我知道如何获取带有特定标签的所有帖子。但是当我想做相反的事情是行不通的。
我正在获得所有带有标签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
的帖子。
答案 0 :(得分:3)
您可以使用whereDoesntHave
$posts = Post::whereDoesntHave('tags', function ($query) {
$query->where('name', 'Laravel');
})->orderBy('created_at', 'desc')->take(12)->get();
与此相关,您将仅获得tags
没有名称为Laravel
的帖子。