Как в родительской категории получить товары из дочерних категорий?
Битый час не могу справиться с задачей) Пишу на Laravel, использую связь eloquent. Мне нужно отобразить на странице категории, в которых есть товары. Нет товаров - категорию не отображать. По идее должно быть все просто, но видимо не для меня))
Пример:
Одежда
Футболки и поло
Футболки
Поло
Лонгсливы
По факту, товары лежат в конечной категории (Например футболки), но в таком случае категория "Одежда" не должна быть пустой. Для того, чтобы выводить категории с продуктами использую такие связи в модели Category:
public function childrenCategories()
{
return $this->hasMany(self::class, 'parent_id', 'category_id');
}
public function allChildrenCategories()
{
return $this->childrenCategories()->with(['allChildrenCategories', 'products']);
}
public function products(){
return $this->hasMany(Product::class,'category_title','title')->where('stock', 'in-stock');
}
В контроллере CategoryController:
$allChildCategories = Category::where('name', $categoryName->name)->with('allChildrenCategories')->get()->toArray();
Ну и пробу вывести это:
dump($allChildCategories);
Получаю почти то, что нужно. Но, естественно, при таком раскладе "products" содержит только конечная категория. А мне нужно, чтобы родительская категория в таком случае тоже содержала продукты.
Есть идеи, как такое можно реализовать?
P.S. Возможно мой подход в корне не верен, поэтому строго не судите, я только начинаю разбираться))