按急切加载值对集合进行排序

Sort collection by eager load value

我有一个 brand table, models table, categories table.

brandmodelshasMany 关系,modelsbrandbelongsTo 关系,categoriesbelongsToManymodels table 的关系。一切正常。

现在,如何获取特定类别中品牌的所有型号?

我试过这个:

$categories = Category::with(['models'=>function($query) use ($brand_name){
            $query->with(['brand'=>function($query) use ($brand_name){
                $query->where('name', $brand_name);
            }]);
        }])->where('name', 'presses')->first();

但它与选择特定类别中的所有模型具有相同的效果。它没有过滤品牌名称。

我该怎么做?

试试看效果如何

$categories = Category::with(['models'=>function($query) use ($brand_name){
     $query->whereHas('brand', function($query) use ($brand_name){
         $query->where('name', $brand_name);
     });
 },'models.brand'])->where('name', 'presses')->first();