خوندن رو از پدر و سردسته شروع کن و از اون بیا پایین به فرزنداش بجای اینکه از وسط بخونی و بعد هم دنبال پدرش بگردی هم دنبال فرزندش !
برای راهنمایی بهتر باید ساختار دیتابیست رو بزاری ولی با یه تابع بازگشتی میتونی همه فرزند ها رو یا پدر ها رو بخونی
این رو همینجوری نوشتم اینجا که ببینی چجوری کار میکنه احتمالا اشتباه داشته باشه ولی یه همچین چیزی میشه
function category_children($category_id , $data = [] )
{
$children = Category::where('parent_id' , $category_id )->get();
foreach($children as $child )
{
$data[] = [
'parent' => $child ,
'children'=> category_children($child->id)
] ;
}
return $data ;
}