Доктрина 2: Рекурсивно выбирать все связанные с собой связанные сущности (NestedSet) - PullRequest
3 голосов
/ 16 ноября 2011

Я определил самоссылаемый объект: Категория , как показано в документе .

По сути, он создает несортируемое дерево.

Какой DQL-запрос я должен выполнить, чтобы выбрать всех родителей, родительских родителей ....?

РЕДАКТИРОВАТЬ: В настоящее время я выбираю все категории, оставляя присоединение к их родителям.Затем я использую метод сущностей для извлечения всех предков без дополнительных запросов:

public function hereToRoot( $allCategories )
{
    $ancestors = array();
    $leftJoinedParent = $this->getParent();
    //add parents
    while ( !is_null($leftJoinedParent) ) {
        $nextAncestor = $allRoles[$leftJoinedParent->getId()];
        $ancestors[] = $nextAncestor;
        $leftJoinedParent = $nextAncestor->getParent();
    }
    return array_reverse($ancestors);
}

1 Ответ

0 голосов
/ 18 ноября 2011

Если вы хотите иметь древовидные объекты, лучше использовать соответствующие расширения . Репозиторий GitHub для них здесь .

...