在我的 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() 方法设置默认结果顺序,深入到孩子们......?