У меня есть переменная $ path, которая содержит массив имен категорий родства. Используя эту переменную, я хотел бы создать новый массив $ categories_children, который будет содержать массив дочерних элементов каждой категории из массива $ path в соответствии с его названием. Я использую Doctrine Tree-Nestedset расширение Гедиминаса Morkevicius и я попытался это:Итерация пути дерева Doctrine в Symfony 2
$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository('MyProjectAdminBundle:Category');
$category = $repo->findOneById($id);
$path = $repo->getPath($category);
$categories_children = array();
foreach($path as $node){
$parent = $repo->findOneByTitle($node);
$categories_children[] = $repo->getChildren($parent, true);
}
Проблема заключается в том, что метод GetChildren() с аргументом $ родителя возвращает тот же массив, как например, когда передаются аргумент NULL. Это означает, что он вернет все узлы, начиная с root, вместо того, чтобы начинать с выбранной категории. Как-то метод findOneByTitle(), который используется в переменной $ parent, не принимает аргументы из getPath() и ведет себя как NULL.
Теперь, когда я использую getTreeAsFlatArray ($ родительский), он возвращает «FatalErrorException: ошибка: Вызов функции члена getLft() на не-объект ". –
его просто пример запроса, как вы можете получить дочерние узлы, узел готов к использованию функции. –
Хорошо, я настрою getTreeAsFlatArray() только для моего использования. Я также пытался использовать дочернее поле с методом get в сущности. Для получения дочерних элементов я просто использовал $ categories_children [] = $ repo-> getChilds(). Но результаты поиска все те же: «Ошибка: вызов функции-члена getChilds() для не-объекта». Я не понимаю, как метод findOneByTitle() возвращает нечто иное, чем объект. Благодарю. –