如何恢复根节点

时间:2015-05-23 15:28:25

标签: php symfony doctrine-orm tree nested

将symfony2和doctrine2与doctrine树扩展一起使用,我最近更新了一个实体,使其成为一个学说嵌套集树。

doctrine架构更新强制使用空数据添加了正确的列。

然后我运行了以下代码:

        $repo = $this->getDoctrine()->getRepository('AppBundle:FoodAnalytics\Recipe');

        $repo->verify();
// can return TRUE if tree is valid, or array of errors found on tree
        $repo->recover();
        $this->flush(); // important: flush recovered nodes
// if tree has errors it will try to fix all tree

它成功恢复了左右和水平值但不是root。 我无法手动设置根值(由学说监听器禁止)。

如何更新这些根值以使树能够正常工作?

谢谢!

1 个答案:

答案 0 :(得分:-1)

好吧,我没有找到面向对象的解决方案,所以我去了一个原始的SQL查询。 我在任何实体获得父母之前这样做,因此每个实体的根值应该等于它自己的id。

在phpmyadmin中,粘贴以下sql查询并执行:

update recipe
set recipe.root = recipe.id