Как в родительской категории получить товары из дочерних категорий?

Битый час не могу справиться с задачей) Пишу на 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. Возможно мой подход в корне не верен, поэтому строго не судите, я только начинаю разбираться))


Ответы (0 шт):