Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

symfony2 sort collection of objects by a property

I have this entities:

class Categoria {

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     */

    protected $id;

    /** @ORM\Column(type="string", length=100) */
    protected $nom;

    /** @ORM\Column(type="string", length=100) */
    protected $slug;

    /** @ORM\Column(type="decimal", precision=3, scale=0) */
    protected $ordre;

    /** @ORM\Column(type="boolean", nullable=true) */
    protected $actiu=FALSE;

    /** @ORM\Column(type="decimal", precision=4, scale=0, nullable=true) */
    protected $enllaç=null;

    /** @ORM\OneToMany(targetEntity="LoPati\MenuBundle\Entity\subCategoria", mappedBy="categoria", cascade={"persist", "remove"} )*/
     protected $subCategoria; 
public function __construct()
{
    $this->subCategoria = new \Doctrine\Common\Collections\ArrayCollection();

}

/**
 * Add subCategoria
 *
 * @param LoPati\MenuBundle\Entity\subCategoria $subCategoria
 */
public function addsubCategoria(\LoPati\MenuBundle\Entity\subCategoria $subCategoria)
{
    $this->subCategoria[] = $subCategoria;
}

/**
 * Get subCategoria
 *
 * @return Doctrine\Common\Collections\Collection 
 */
public function getSubCategoria()
{
    return $this->subCategoria;
}

And

class SubCategoria {

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue
 */

protected $id;

/** @ORM\Column(type="string", length=100) */
protected $nom;

/** @ORM\Column(type="string", length=100) */
protected $slug;

/** @ORM\Column(type="decimal", precision=3, scale=0) */
protected $ordre;

/** @ORM\Column(type="boolean", nullable=true) */
protected $actiu=FALSE; 

/** @ORM\Column(type="boolean", nullable=true) */
protected $llista=FALSE;

/** @ORM\Column(type="decimal", precision=4, scale=0, nullable=true) */
protected $enllaç=null;

/** @ORM\ManyToOne(targetEntity="Categoria", inversedBy="subCategoria") */

protected $categoria;

In Categoria entity I would like sort the collection of subcategoria Objects sort by $ordre.

How I can do it ? Is possible do it in Twig templeate or in the definitios of Entity?

Thanks

Regards

like image 842
Marc Morales Valldepérez Avatar asked Aug 11 '12 10:08

Marc Morales Valldepérez


1 Answers

Use this annotation:

/** 
 * @ORM\OneToMany(targetEntity="LoPati\MenuBundle\Entity\subCategoria", mappedBy="categoria", cascade={"persist", "remove"} )
 * @ORM\OrderBy({"order" = "DESC", "id" = "DESC"})
*/
protected $subCategoria;

...

like image 178
guillaumepotier Avatar answered Nov 14 '22 17:11

guillaumepotier