回答

1

找到了解決方案。

  1. 檢索節點對象的完整列表:與您的節點

    $repo = $this->getDoctrine()->getManager()->getRepository('NestedEntity'); 
    $nodes = $repo->getChildren(); 
    
  2. 構建樹。

    $tree = $repo->getRepoUtils()->buildTreeArray($nodes); 
    
  3. buildTreeArray方法接受節點數組的數組,所以你必須在你的實體實現了ArrayAccess接口。它也把所有的孩子放在節點數組的__children鍵中。

    /** 
    * @Gedmo\Tree(type="nested") 
    * @ORM\Table(name="nested_entity") 
    * @ORM\Entity(repositoryClass="Gedmo\Tree\Entity\Repository\NestedTreeRepository") 
    */ 
    class NestedEntity implements \ArrayAccess 
    { 
    
        public function offsetExists($offset) 
        { 
         return property_exists($this, $offset); 
        } 
    
        public function &offsetGet($offset) 
        { 
         return $this->$offset; 
        } 
    
        public function offsetSet($offset, $value) 
        { 
         $this->$offset = $value; 
        } 
    
        public function offsetUnset($offset) 
        { 
         $this->$offset = null; 
        } 
    
        protected $__children = []; 
    
        ... 
    
0

您可以只使用childrenHierarchy()方法整棵樹檢索:

$tree = $repo->childrenHierarchy();