Не получается правильная рекурсия

Помогите с рекурсией разобраться.. Есть такая конструкция в БД

введите сюда описание изображения

Как правильно организовать рекурсию, чтобы выглядело как то так:

567->568->569->573

570->571->572

я пытался как то так, но это неправильный вариант

 private function menuRecursion($categories, $elements = [], $root_id = null, $parent_id = null)
    {
        foreach ($categories as $element) {

            if ($element->parent_id) {
                $parent_id = $element->parent_id != $root_id ? $element->parent_id : $parent_id;

                $elements[$root_id][$parent_id] = $element->id;

                $elements = $this->menuRecursion(AnalysCategory::findOne($element->parent_id), $elements, $root_id,$parent_id);
            } else {
                $root_id = $element->id;
            }
        }
        return $elements;
    }

Ответы (0 шт):