Цель:
У меня есть объект категории. Каждая категория может иметь подкатегории.
Теперь я хочу получить указанные 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: ошибка: ожидаемый литерал, получен «узел»)
Заранее спасибо, что нашли время!