У меня есть следующие многотомные полиморфные отношения
Asset
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'))
Где можно поместить условие, чтобы использовать только те активы, которые прошли условие, где ('code', '=', 'FR')