雄辩的多态多态嵌套查询withCount

时间:2018-10-29 17:03:05

标签: laravel-5 eloquent laravel-5.7

我有以下许多多态关系

资产

public function countries()
{
    return $this->morphToMany('App\Country', 'locationable');
}

国家/地区

public function assets()
{
    return $this->morphedByMany('App\Asset', 'locationable');
}

“类别”也包含很多资产

public function assets()
    {
        return $this->belongsToMany('App\Asset', 'category_asset');
    }

我需要查询一个类别并渴望分配已分配国家/地区的资产。

这是我雄辩的查询

$category = Category::with(['children.assets' => function ($query) {
            $query->whereHas('countries', function($q) {
                $q->where('code', '=', 'FR');
            });
        }])
            ->where('id', 1)
            ->first();

这似乎可行,但是当我将Category模型与$ this-> assets一起使用时,即使在查询中只返回了一个,它也会加载所有这些。

我正在像这样使用API​​资源

AssetResource::collection($this->whenLoaded('assets'))

我在哪里可以放置条件以仅使用通过条件where('code','=','FR')

的资产

1 个答案:

答案 0 :(得分:0)

这是我的错误,我应该检查以下子类别:

Category::with(
                ['children' => function ($query) {
                $query->with(['children.assets' => function ($q) {
                    $q->country('GB');
                }]);
            }])
                ->where('id', 1)
                ->first();

类别有子类别

public function children()
    {
        return $this->belongsToMany('App\Category', 'parent_category_child_category', 'parent_category_id', 'child_category_id');
    }