Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Symfony2(doctrine2)中使用树结构:如何设置顺序?_Symfony_Doctrine Orm_Twig - Fatal编程技术网

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

在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一致。 但是,我想让订单属性处于领先地位 在大多数情况下,顺

在我的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的子池


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

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

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

谢谢你,托马斯!我以前试过,但后来我用错了方法。我现在明白了,您只需输入要订购的子项的属性。我想到的是sql表,想到的是按{parent,order}排序,但这确实毫无意义,因为您已经在父级上了…:)