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

Для того чтобы получить все товары из родительских категорий, необходимо выполнить несколько шагов.

1. Определите модель Category и связь с моделью Product.

namespace AppModels;

use IlluminateDatabaseEloquentModel;

class Category extends Model
{
    public function products()
    {
        return $this->hasMany(Product::class);
    }
}

2. Создайте метод в контроллере или в сервисном классе, который будет выполнять необходимую логику для получения товаров из родительских категорий.

use AppModelsCategory;

public function getProductsFromParentCategories()
{
    $parentCategories = Category::whereNull('parent_id')->get();
    $products = [];

    foreach ($parentCategories as $parentCategory) {
        $products = array_merge($products, $parentCategory->products->toArray());
    }

    return $products;
}

3. Используйте метод getProductsFromParentCategories() из контроллера или сервиса для получения всех товаров из родительских категорий.

$products = $this->getProductsFromParentCategories();

В результате выполнения этих шагов вы получите массив всех товаров, которые находятся в родительских категориях.