如何使用symfony中的gedmo tree doctrine扩展更新现有类别层次结构数据的左,右,级别值?

时间:2015-04-09 08:20:41

标签: symfony doctrine-orm doctrine-extensions stofdoctrineextensions

http://sqlfiddle.com/#!9/1d4a6/1

我有类别的现有分层数据。我一直在使用传统方法来使用parent_id来获取父,子等。

现在我正在尝试使用Gedmo教义扩展。我已经安装了扩展和更新的架构。

如果我使用文档示例中给出的父子项创建新类别,则可以正常工作。它正确填充lft,lvl,rgt,root列。

   $food = new Entity\Category();
    $food->setTitle('Food');

    $fruits = new Entity\Category();
    $fruits->setParent($food);
    $fruits->setTitle('Fruits');

    $apple = new Entity\Category();
    $apple->setParent($fruits);
    $apple->setTitle('Apple');

    $milk = new Entity\Category();
    $milk->setParent($food);
    $milk->setTitle('Milk');

    $em->persist($food);
    $em->persist($milk);
    $em->persist($fruits);
    $em->persist($apple);
    $em->flush();

但我旧类别的列数上面有0个值。

我尝试获取所有结果并更新它们,但上面列的所有值仍为0.

更新1:

添加此

$repo->recover();

填充lft和rgt但仍然lvl和root是0& NULL resp。

2 个答案:

答案 0 :(得分:0)

只更新左右:

    $repo->verify();
    $repo->recover();
    $em->flush();

但我仍然在寻找如何更新关卡:)

答案 1 :(得分:0)

您需要在恢复前清除缓存

$em->clear();
$repo->verify();
$repo->recover();
$em->flush();