原则2.1:如何按集合中的聚合字段排序


Doctrine 2.1: How to orderBy aggregate field in a collection?

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

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

并且我从该实体获得的集合将被自动排序。

我的问题是,是否可以按聚合字段排序?

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

提前感谢!

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

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

结果是什么?

发件人http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/annotations-reference.html#annref-订购人:

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

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