Как получить некоторые дочерние узлы по идентификатору со всеми родителями (DoctrineExtensions, Gedmo-Tree NestedTreeRepository, Symfony) - PullRequest
1 голос
/ 09 февраля 2020

Цель:

У меня есть объект категории. Каждая категория может иметь подкатегории.

Теперь я хочу получить указанные c узлы категории по идентификатору с all его родителями

Мое текущее решение (пользовательский репозиторий). функция):

public function getChildrenHierarchyByCategoryIDs($categoryIDsArray)
{
    $qb = $this->getNodesHierarchyQueryBuilder();
    $qb->andWhere('node.id in (:categoryIDs)')
       ->setParameter('categoryIDs', $categoryIDsArray)
        ->orWhere('node.id in (:rootNodes)') // "Workaround", get all available root nodes (1st level only) manually, because I don't know how to get them by children's parentID (node.parent) "automatically" (with second level etc.)
        ->setParameter('rootNodes', $this->getRootNodes())
    ;

    $aComponents = $qb->getQuery()->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);

    return $this->buildTreeArray($aComponents);
}

Вопрос:

Как я могу получить родителей (всех узлов, найденных по идентификатору) автоматически, вместо того, чтобы извлекать все возможные Родитель вручную по идентификатору (см. «Обходной путь» в коде)?

Я не могу найти никакого решения ..

Я думаю, что это должно быть что-то вроде: ->orWhere('node.id in (node.parent)'), который не работает. ([Синтаксическая ошибка], строка 0, столбец 89: ошибка: ожидаемый литерал, получен «узел»)

Заранее спасибо, что нашли время!

...