$subcategories Map of sub-category ID → title. */ public function __construct( public int $id, public string $name, public array $subcategories, ) {} public static function fromCategory(RootCategory $category): self { /** @var array $subcategories */ $subcategories = $category->categories()->pluck('title', 'id')->all(); return new self( id: (int) $category->id, name: (string) $category->title, subcategories: $subcategories, ); } }