0

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

{ 类别,Level1Item,Level2Item,Level3Item }

通过“父”和“子”属性将它们连接起来并形成层次结构。在 MySql-db 中,表有一个名为 parent_id 的字段(类别除外,因为它们位于根级别)。此外,还有一个属性“order”(映射到数据库字段“order_id”)。

我通过实体管理器将类别提供给 Twig 模板。如果存在,模板会遍历级别 1、2 和 3 中的项目。

所有项目的显示顺序与项目 ID 一致。但是,我想让 order-property 领先。

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

我知道在使用 QueryBuilder 或在 entityRepository 中使用自定义函数时如何使用排序功能强制排序。但是如何为 Twig 将使用的 ->findAll() 方法设置默认结果顺序,深入到孩子们......?

4

1 回答 1

0

您可以像这样在实体映射注释中指定顺序:

/**
 * @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
 * @ORM\OrderBy({"name" = "ASC"})
 */
private $children;
于 2013-03-20T12:50:13.960 回答