如何获取其类别的父类别状态仅处于活动状态的数据?

时间:2021-06-30 05:06:05

标签: laravel

我有一个 Service_Categories 表,该表的结构是:

<头>
类别标题 parent_id 状态
1 第一类 未激活
2 第一个子类别 1 活动
3 第一个子子类别 2 活动

我有一个服务表

<头>
服务名称 category_id
1 第一次服务 3
2 二次服务 1

模型

    public function getAllServices() {
        $services = Service::with(['serviceCategory','serviceCategory.parents'])
            ->where('status',true)
            ->whereHas('serviceCategory',function($q) {
                return $q->where('status',true)
                    ->whereHas('serviceCategory.parents',
                    function($parentQuery) {
                        return $parentQuery->where('status, true);
                })
            })
        }
    }    

我在这里想说的是,如果顶级类别处于非活动状态,则不应在类别的父类别处于非活动状态的集合中显示服务。

2 个答案:

答案 0 :(得分:0)

尝试将您的第二个 whereHas 移到根,因为那里的关系与服务相关,而不是其中的关系......

public function getAllServices()
{
    $services = Service::with(['serviceCategory', 'serviceCategory.parents'])
        ->where('status', true)
        ->whereHas('serviceCategory', function ($q) {
            return $q->where('status', true);
        })
        ->whereHas('serviceCategory.parents', function ($parentQuery) {
            return $parentQuery->where('status', true);
        });
}

答案 1 :(得分:0)

您的状态列不是布尔类型,但为什么要检查 *** status=true*** 而不是 status="active" 您不能使用布尔值来查找字符串。

相关问题