尝试获取每个连接记录都处于非活动状态的外键记录(Laravel 雄辩的查询)

Trying to get foraign key records where every connected records are deactive ( Laravel elequent query )

我有2张桌子

Category's ( id, name )
Sub_categories ( id, key, value, category_id )

我正在尝试获取所有 sub_categories 都已停用的类别 ( means are soft-deleted )

让我再解释一下

我有sub_categories这样的数据

    [
    {
        "id": 1,
        "category_id": 1,
        "key": "sub 1",
        "value": "sub_1",
        "deleted_at": null
    },
    {
        "id": 2,
        "category_id": 1,
        "key": "sub 2",
        "value": "1",
        "deleted_at": null
    },
    {
        "id": 4,
        "category_id": 1,
        "key": "sub 3",
        "value": "1",
        "deleted_at": "2019-07-09 06:06:01"
    },
    {
        "id": 5,
        "category_id": 2,
        "key": "sub 1",
        "value": "33",
        "deleted_at": "2019-07-09 06:06:01"
    },
    {
        "id": 6,
        "category_id": 2,
        "key": "sub 2",
        "value": "33",
        "deleted_at": "2019-07-09 06:06:01"
    }
]

我只想要 category_id -> 2(其中所有 sub_categories 都是 softedeleted

听说的品类型号代码

    public function subCategory() {
         $this->makeVisible('deleted_at');
         return $this->hasMany('App\SubCategory','category_id','id');
    }

您首先必须定义 CategorysSub_categories - https://laravel.com/docs/5.8/eloquent-relationships 之间的关系。 然后使用查询得到你想要的https://laravel.com/docs/5.8/queries

获取具有子类别的类别 ID:

$categoryIdsWithSubCategories = SubCategory::get()->pluck('category_id')->toArray();

获取没有子类别的类别:

$categoriesWithoutSubCategories = Category::whereNotIn('id', $categoryIdsWithSubCategories)->get();

$categories = Categories::doesntHave('subCategory')->get();