【发布时间】:2012-01-07 12:41:33
【问题描述】:
我正在尝试从 gedmo nested-set 扩展 blog 复制示例,其中有许多父节点。在那里,您可以创建尽可能多的 可移动 父节点和子节点(这对于 nested setWikipedia 来说很典型)。
阅读低谷评论部分,常见的建议是删除@Gedmo\TreeRoot annotation/mapping,但如果我这样做,我可以移动根节点,但树会损坏,尤其是左右 id。如果我保留TreeRoot,并尝试移动根节点,我会得到“没有节点兄弟姐妹”或类似的东西,正如预期的那样。
查看扩展博客上的实时示例,您可以看到您可以在没有父级的情况下创建类别并将其向上或向下移动。
我的类别实体 - 相关部分:
class Category
{
/**
* @Gedmo\TreeLeft
* @ORM\Column(name="lft", type="integer")
*/
private $lft;
/**
* @Gedmo\TreeLevel
* @ORM\Column(name="lvl", type="integer")
*/
private $lvl;
/**
* @Gedmo\TreeRight
* @ORM\Column(name="rgt", type="integer")
*/
private $rgt;
/**
* @Gedmo\TreeRoot
* @ORM\Column(name="root", type="integer", nullable=true)
*/
private $root;
/**
* @Gedmo\TreeParent
* @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
*/
private $parent;
/**
* @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
* @ORM\OrderBy({"lft" = "ASC"})
* @Exclude
*/
private $children;
}
问题:如何制作多根树(我想避免创建将是单根的假类别,并将其他所有内容添加为该节点的子节点),并且能够移动根节点上下?
附:我在 master 分支上。
【问题讨论】:
-
您找到解决方案了吗?
-
@loplateral 最后我做了我想要避免的事情。添加“假”树根类别和所有其他根节点作为假的子节点。虽然存在一些缺点,但它可以在表单中显示类别(在我的情况下)或在无序列表中呈现它们时隐藏虚假类别等。
-
这也是我现在所做的。对我来说没问题,但我确实不断打破树,不确定它是否完全健壮。
-
这有什么更新吗?你找到解决办法了吗?
标签: php mysql doctrine symfony nested-sets