我有以下许多多态关系
资产
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')
的资产答案 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');
}