如何恢复根节点

How to recover root nodes

提问人:Sébastien 提问时间:5/23/2015 最后编辑:NiklasSébastien 更新时间:5/24/2015 访问量:476

问:

使用带有 doctrine 树扩展的 symfony2 和 doctrine2,我最近更新了一个实体,使其成为 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

它成功恢复了左、右和电平值,但没有恢复根值。 我无法手动设置根值(教义侦听器禁止)。

如何更新这些根值,以便树可以正常工作?

谢谢!

php symfony doctrine-orm 嵌套

评论


答:

-1赞 Sébastien 5/24/2015 #1

好吧,我没有找到面向对象的解决方案,所以我选择了原始 SQL 查询。 我是在任何实体获得父实体之前执行此操作的,因此每个实体的根值都应等于自己的 ID。

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

update recipe
set recipe.root = recipe.id