Reputation: 7686
I have an entity with a ArrayCollection field. In the annotations I can write
@ORM\OrderBy({"somefield" = "DESC"})
and the collection I get from that entity will be automatically ordered.
My question is if it is possible to order by aggregate fields?
My current issue: I have 2 fields in the collection entity: visited
and shown
, I would like to sort the collection by a rating index, which is: visited / shown
. I tried writting it in the annotations, but it says it should be a valid field. I know how to do this with DQL, but I don't know how to recreate it in the Entity's declaration with annotations.
Thanks in advance!
Upvotes: 6
Views: 3876
Reputation: 9374
You need math operation in ORDER BY statement - in SQL it would be ORDER BY visited/shown DESC. I think it's not possible to do within annotations.
Upvotes: 1
Reputation: 8046
Not quite sure I do understand your problem. But what does
@ORM/OrderBy({"visited" = "DESC", "shown" = "DESC"})
give as result?
The DQL Snippet in OrderBy is only allowed to consist of unqualified, unquoted field names and of an optional ASC/DESC positional statement. Multiple Fields are separated by a comma (,). The referenced field names have to exist on the targetEntity class of the @ManyToMany or @OneToMany annotation.
Upvotes: 3