在Symfony2中使用树结构(doctrine2):如何设置顺序?

时间:2013-03-20 10:05:51

标签: symfony doctrine-orm twig

在我的Symfony2应用程序中,我有四个实体共同创建一个导航菜单:

{Category,Level1Item,Level2Item,Level3Item}

通过“parent”en“children”属性,它们相互连接并形成层次结构。 在MySql-db中,表有一个名为parent_id的字段(除了类别,因为它们位于根级别)。 此外,还有一个属性“order”(映射到db-field“order_id”)。

我通过实体管理器将类别提供给Twig模板。 如果存在,模板将迭代level1,2和3中的项目。

显示所有项目的顺序与项目ID一致。 但是,我想使订单属性领先。

在大多数情况下,订单会降低:{parent_id,order_id}。 因为每个父项的子项可以具有1,2,3的顺序,所以order_id本身不是唯一的。虽然它们位于每个父池中,但没有两个子节点,例如,parent_id 1为order_id 2。

我知道在使用QueryBuilder时,或者在entityRepository中使用自定义函数时,如何使用排序功能强制执行命令。但是如何设置Twig将使用的 - > findAll()方法的默认结果顺序,向下钻取到子项......?

1 个答案:

答案 0 :(得分:0)

您可以在实体映射注释中指定顺序,如下所示:

/**
 * @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
 * @ORM\OrderBy({"name" = "ASC"})
 */
private $children;
相关问题