Laravel 4 - Eloquent. Nieskończone dzieci do użytecznej tablicy?

Mam tabelę kategorii. Każda kategoria może mieć opcjonalnego rodzica (domyślnie 0, jeśli nie ma rodzica).

Chcę zbudować proste drzewo listy html z poziomami kategorii.

Przykładowa data:

Foods
-- Fruit
---- Apple
---- Banana
---- Orange
-- Veg
---- Cucumber
---- Lettuce
Drinks
-- Alcoholic
---- Beer
---- Vodka
Misc
-- Household Objects
---- Kitchen
------ Electrical
-------- Cooking
---------- Stove
---------- Toaster
---------- Microwave

Zauważ, że musi to działać na około 10 poziomach. Bardzo bym chciał, żeby był nieskończony, ale naprawdę nie chcę iść drogą używania modelu zagnieżdżonego zestawu, ponieważ spowoduje to ogromne opóźnienia w tym projekcie.

Dokumenty na ten temat dla laravel są straszne, bez prawdziwego odniesienia do tego, gdzie nawet zacząć. Bawiłem się nim od kilku dni, próbując dowiedzieć się, co robić, i wydaje mi się, że nie ma go bez ogromnego bałaganu dla każdej pętli 10 razy.

Moje drzewo danych korzysta z następującego modelu w moim modelu:

<?php
class Item extends Eloquent {
    public function parent()
    {
        return $this->hasOne('Item', 'id', 'parent_id');
    }

    public function children()
    {
        return $this->hasMany('Item', 'parent_id', 'id');
    }

    public function tree()
    {
        return static::with(implode('.', array_fill(0,10, 'children')))->where('parent_id', '=', '0')->get();
    }
}

To powoduje, że cały rodzic i dzieci osiągają poziom 10. Działa to dobrze, ale naprawdę nie możesz nic zrobić z danymi potomnymi bez ręcznego umieszczania 10 pętli foreach w sobie.

Co ja tu robię źle? Z pewnością nie powinno to być trudne / źle wykonane? Wszystko, co chcę zrobić, to uzyskać prostą listę html z elementami w strukturze drzewa.

Złożyłem szybki przykład SQLFiddle z fałszywymi danymi używanymi powyżej:http://sqlfiddle.com/#!2/e6d18/1

questionAnswers(3)

yourAnswerToTheQuestion