在Symfony2(doctrine2)中使用树结构:如何设置顺序?
在我的Symfony2应用程序中,我有四个实体共同构成导航菜单: {类别,级别1项目,级别2项目,级别3项目} 通过“父”和“子”属性将它们连接起来并形成层次结构。 在MySql数据库中,表有一个名为parent_id的字段(根级别的类别除外)。 此外,还有一个属性“order”(映射到db字段“order\u id”) 我通过实体管理器将类别输入到细枝模板。 如果存在,模板将迭代level1、2和3中的项 所有项目的显示顺序与项目id一致。 但是,我想让订单属性处于领先地位 在大多数情况下,顺序是do:{parent\u id,order\u id}。 因为每个父项的子项可以有顺序1、2、3,所以顺序id本身不是唯一的。但它们位于每个父池中,例如,没有两个父池的顺序为2的子池在Symfony2(doctrine2)中使用树结构:如何设置顺序?,symfony,doctrine-orm,twig,Symfony,Doctrine Orm,Twig,在我的Symfony2应用程序中,我有四个实体共同构成导航菜单: {类别,级别1项目,级别2项目,级别3项目} 通过“父”和“子”属性将它们连接起来并形成层次结构。 在MySql数据库中,表有一个名为parent_id的字段(根级别的类别除外)。 此外,还有一个属性“order”(映射到db字段“order\u id”) 我通过实体管理器将类别输入到细枝模板。 如果存在,模板将迭代level1、2和3中的项 所有项目的显示顺序与项目id一致。 但是,我想让订单属性处于领先地位 在大多数情况下,顺
我知道在使用QueryBuilder或在entityRepository中使用自定义函数时,如何使用排序功能强制订单。但是如何设置Twig将使用的->findAll()方法的默认结果顺序,深入到子项…?您可以在实体映射注释中指定如下顺序:
/**
* @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
* @ORM\OrderBy({"name" = "ASC"})
*/
private $children;
谢谢你,托马斯!我以前试过,但后来我用错了方法。我现在明白了,您只需输入要订购的子项的属性。我想到的是sql表,想到的是按{parent,order}排序,但这确实毫无意义,因为您已经在父级上了…:)