2012-03-06 23 views
6

Tengo una entidad con un campo ArrayCollection. En las anotaciones Puedo escribirDoctrine 2.1: ¿Cómo ordenar? ¿Por campo agregado en una colección?

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

y la colección que recibo de esa entidad se ordenará automáticamente.

Mi pregunta es si es posible ordenar por campos agregados?

Mi problema actual: Tengo 2 campos en la entidad colección: visited y shown, quisiera ordenar la colección por un índice de calificación, que es: visited/shown. Intenté escribirlo en las anotaciones, pero dice que debería ser un campo válido. Sé cómo hacer esto con DQL, pero no sé cómo volver a crearlo en la declaración de la Entidad con anotaciones.

¡Gracias de antemano!

Respuesta

1

Necesita operación matemática en instrucción ORDER BY - en SQL sería ORDER BY visitado/mostrado DESC. Creo que no es posible hacerlo dentro de las anotaciones.

3

No estoy seguro de entender su problema. Pero, ¿qué

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

dar como resultado?

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

El fragmento DQL en OrdenarPor sólo se permite a consistir en nombres de campos no calificados, sin comillas y de un ASC/DESC afirmación posicional opcional. Varios campos están separados por una coma (,). Los nombres de campo a los que se hace referencia deben existir en la clase targetEntity de la anotación @ManyToMany o @OneToMany.

+1

No necesita operaciones matemáticas en la instrucción ORDER BY - en SQL sería 'ORDER BY visitado/mostrado DESC'. Creo que no es posible hacerlo dentro de las anotaciones –

+0

¡esto funciona! – coder4show

+0

@ MaciejPyszyński Tiene razón, no es posible en este momento, ¿puede publicarlo como respuesta, para que yo pueda aceptarlo? –

Cuestiones relacionadas