orderBy('id')->get(); // Prepare categories grouped by content type and a flat list of root categories $categoriesByType = []; $categories = collect(); foreach ($contentTypes as $ct) { $rootCats = $ct->rootCategories; foreach ($rootCats as $cat) { // Attach subcategories $cat->subcategories = $cat->children; $categories->push($cat); } $categoriesByType[$ct->slug] = $rootCats; } return view('browse-categories', [ 'contentTypes' => $contentTypes, 'categoriesByType' => $categoriesByType, 'categories' => $categories, ]); } }