querybuilder query orderby onetomany left inner sorting symfony doctrine entities

sorting - query - orderby entity symfony



cómo ordenar una colección de matrices de una entidad en symfony2 (3)

Debería poder usar la @ORM/OrderBy que le permite especificar columnas para pedir colecciones en:

/** * @ORM/OneToMany(targetEntity="BizTV/ContentManagementBundle/Entity/Content", mappedBy="container") * @ORM/OrderBy({"sort_order" = "ASC"}) */ private $content;

De hecho, esto puede ser un duplicado de Cómo hacer un pedido por OneToMany / ManyToOne

Editar

Comprobando el consejo de implementación, parece que debe buscar las tablas con una consulta de unión a la colección para que la anotación @ORM / OrderBy funcione: http://www.krueckeberg.org/notes/d2.html

Esto significa que debe escribir un método en el repositorio para devolver el contenedor con la tabla de contenidos unida.

Tengo una entidad "contenedor" con esta propiedad

/** * @ORM/OneToMany(targetEntity="BizTV/ContentManagementBundle/Entity/Content", mappedBy="container") */ private $content;

la propiedad es una colección de matriz ...

public function __construct() { $this->content = new /Doctrine/Common/Collections/ArrayCollection(); }

... con estos dos métodos estándar

/** * Add content * * @param BizTV/ContentManagementBundle/Entity/Content $content */ public function addContent(/BizTV/ContentManagementBundle/Entity/Content $content) { $this->content[] = $content; } /** * Get content * * @return Doctrine/Common/Collections/Collection */ public function getContent() { return $this->content; }

Ahora mi pregunta es, ¿hay una manera fácil de construir una función de clasificación en esto, tal vez en la llamada getContent ()? No soy php wiz y ciertamente no estoy experimentado en Symfony2, pero aprendo a medida que avanzo.

La propia entidad de contenido tiene un INT de clasificación como este en el que quiero ordenarlo:

/** * @var integer $sortOrder * * @ORM/Column(name="sort_order", type="integer") */ private $sortOrder;


Puedes escribir

@ORM/OrderBy({"date" = "ASC", "time" = "ASC"})

para ordenamiento de criterios múltiples.


Si quiere estar seguro de que siempre obtiene sus relaciones en el orden basado en los valores actuales de las propiedades, puede hacer algo como esto:

$sort = new Criteria(null, [''Order'' => Criteria::ASC]); return $this->yourCollectionProperty->matching($sort);

Úselo, por ejemplo, si ha cambiado la propiedad Order. Funciona muy bien para una "Última fecha de modificación" también.