Symfony(Doctrine):访问nestedset根元素

时间:2012-03-28 13:06:44

标签: symfony1 doctrine nested-sets

我正在尝试获取嵌套集树的根元素。

以下是该方案:

我有一个类别表作为嵌套集

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()时,我只有“动作”类别,但我想显示“电影”(Root类别),我试着像

getAncestors()

没有运气。

有人可以告诉我如何获取嵌套集的根元素吗?

由于

1 个答案:

答案 0 :(得分:0)

试试这个:

$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();
    }
}

此致 最大