если у дерева одна вершина, я бы сделал реиндекс этого массива в массив вида
ид_элемента => ид_родителя.
в итоге, получаешь ид элемента, извлекаешь родителя, потом его родителя, потом его и так далее, пока не доберешься до элемента, у которого родителем будет 0. в процессе, записывая все ид в массив.
Если есть опыт использования именно фреймворка, то изучить другой будет проще, особенно когда перед глазами пример, как его правильно готовить в конкретном месте.
Норм конторы требуют symfony, кто победнее, вынуждены искать тех, кто умеет любой фреймворк сходной архитектуры.