Symfony (Doctrine): доступ к корневому элементу nestedset - PullRequest
0 голосов
/ 28 марта 2012

Я пытаюсь получить корневой элемент дерева вложенных множеств.

Вот сценарий:

У меня есть таблица категорий, которая действует как вложенный набор

Category:
  actAs:
    NestedSet:
      hasManyRoots: true
      rootColumnName: root_id
  columns:
    name: { type: string(255), notnull: true, unique: false }

и таблица видео

Video:
  actAs: { Timestampable: ~ }
  columns:
    name: { type: string(255), notnull: true }
    ...
  relations:
    Categories:
      class: Category
      refClass: CategoryVideo
      local: video_id
      foreign: category_id
      foreignAlias: Videos

Вот моя проблема: допустим, видео находится в категории «Действие», а «Действие» является дочерним элементом «Фильма», когда я вызываю getCategories.() из моего объекта «Видео», у меня есть только категория «Действие», но я хочу отобразить «Фильм» (категория «Корень»), я попытался что-то вроде

getAncestors()

, но безуспешно.

Может кто-нибудь подсказать, пожалуйста, как получить корневой элемент вложенного набора?

Спасибо

1 Ответ

0 голосов
/ 29 марта 2012

Попробуйте это:

$this->categories = Doctrine::getTable('Categories')->getTree();
$q = Doctrine_core::getTable('Categories')->createQuery('q');
$q->leftJoin('q.Translation qt')->
  addOrderBy('sort ASC')->
  addOrderBy('qt.cat_name ASC'); 

$this->categories->setBaseQuery($q);



foreach($categories->fetchRoots() as $root)
{
    $options = array(
      'root_id' => $root->getCategoryId()
    );
    foreach($categories->fetchTree($options) as $node)
    {
        echo $node->getName();
    }
}

С уважением, Макс

...