首页 > 解决方案 > 如果满足多对多关系条件,Laravel 仅显示模型?

问题描述

所以我有一个模型“Category”和一个具有多对多关系的模型“Post”。

基本上我在某处输出类别,我想要这种类型的伪输出;

这是我迄今为止尝试过的,但如果所有帖子都被标记为隐藏,它似乎只会隐藏类别。如果其中一个“隐藏”为假,即使其他 99 个为真,它也会显示。这与我想要发生的事情完全相反。

Category::latest()->whereHas('posts', function ($query) { 
    return $query->where('hidden', false);
})->get();

希望有人可以提供帮助。

标签: mysqllaraveleloquent

解决方案


你需要扭转你的状况。您当前的查询是“所有具有未隐藏帖子的类别”。您想要“所有没有隐藏帖子的类别”。

Category::latest()->whereDoesntHave('posts', function ($query) {
    return $query->where('hidden', true);
})->get();

推荐阅读