public function updateHierarchicalDatas(AbstractNestedNode $node, $leftnode = 1, $level = 0) { $node->setLeftnode($leftnode)->setLevel($level); if (0 < $node->getChildren()->count()) { $children = $this->createQueryBuilder('n')->andWhere("n._parent = :parent")->setParameters(array("parent" => $node))->orderBy('n._leftnode', 'asc')->getQuery()->getResult(); foreach ($children as $child) { $child = $this->updateHierarchicalDatas($child, $leftnode + 1, $level + 1); $leftnode = $child->getRightnode(); } } $node->setRightnode($leftnode + 1); $this->createQueryBuilder('n')->update()->set('n._leftnode', $node->getLeftnode())->set('n._rightnode', $node->getRightnode())->set('n._level', $node->getLevel())->where('n._uid = :uid')->setParameter('uid', $node->getUid())->getQuery()->execute(); $this->_em->detach($node); return $node; }