Doctrine 2.1:如何在集合中对聚合字段进行排序?

时间:2012-03-06 22:00:47

标签: php symfony doctrine-orm sql-order-by arraycollection

我有一个带有ArrayCollection字段的实体。在我可以写的注释中

@ORM\OrderBy({"somefield" = "DESC"})

我将从该实体获得的集合将自动订购。

我的问题是,是否可以按汇总字段订购?

我当前的问题:我在集合实体中有两个字段:visitedshown,我想按评级索引对集合进行排序,即:visited / shown。我试着在注释中写它,但它说它应该是一个有效的字段。我知道如何使用DQL执行此操作,但我不知道如何使用注释在Entity的声明中重新创建它。

提前致谢!

2 个答案:

答案 0 :(得分:3)

不太确定我是否理解你的问题。但是

是什么

@ORM/OrderBy({"visited" = "DESC", "shown" = "DESC"})

给出结果?

来自http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/annotations-reference.html#annref-orderby

  

OrderBy中的DQL代码段只允许由不合格的,不带引号的字段名称和可选的ASC / DESC位置语句组成。多个字段用逗号(,)分隔。引用的字段名称必须存在于@ManyToMany或@OneToMany批注的targetEntity类中。

答案 1 :(得分:1)

您需要在ORDER BY语句中进行数学运算 - 在SQL中,它将是ORDER BY访问/显示的DESC。我认为在注释中做不可能。