Получение вложенного набора доктрин одним запросом

Я ищу способ получить вложенный набор в одном запросе БД.

schema.yml
Category:
  actAs:
    NestedSet:
      hasManyRoots: true
      rootColumnName: root_id
  columns:
    name: string(255)

$categories = Doctrine::getTable('Category')->getTree();

//SELECT * FROM category c ORDER BY c.root_id asc, c.lft asc

foreach ($categories as $cat)
{
  $cat->getNode(); 
//SELECT * FROM category c WHERE ((c.lft > '1' AND c.rgt < '8') AND c.root_id = '1') ORDER BY c.lft asc
}

Итак, в сумме я получаю столько запросов, сколько категорий, что плохо. Любые идеи?


person Dziamid    schedule 10.03.2011    source источник


Ответы (1)


Взгляните на fetchTree()

http://www.doctrine-project.org/api/orm/1.2/doctrine/doctrine_tree_nestedset.html#fetchTree%28%29

http://www.doctrine-project.org/projects/orm/1.2/docs/manual/hierarchical-data%3Anested-set%3Aworking-with-trees/en#rendering-a-simple-tree

person jgallant    schedule 10.03.2011