【发布时间】:2013-03-20 10:05:51
【问题描述】:
在我的 Symfony2 应用程序中,我有四个实体共同组成一个导航菜单:
{ 类别, Level1Item, Level2Item, Level3Item }
通过“父”和“子”属性将它们连接起来并形成层次结构。 在 MySql-db 中,表有一个名为 parent_id 的字段(类别除外,因为它们位于根级别)。 此外,还有一个属性“order”(映射到db-field“order_id”)。
我通过实体管理器将类别提供给 Twig 模板。 如果存在,模板会遍历级别 1、2 和 3 中的项目。
所有项目的显示顺序与项目 ID 一致。 但是,我想让 order-property 领先。
在大多数情况下,订单会下降:{ parent_id, order_id }。 因为每个父项的子项可能具有顺序 1、2、3,所以 order_id 本身不是唯一的。它们虽然在每个父池中,但没有两个子节点的 order_id 为 2,例如 parent_id 为 1。
我知道在使用 QueryBuilder 或在 entityRepository 中使用自定义函数时如何使用排序功能强制排序。但是如何为 Twig 将使用的 ->findAll() 方法设置默认结果顺序,向下钻取到子项...?
【问题讨论】:
标签: symfony doctrine-orm twig