trier les entités sans utiliser de colonne
Bonjour,
J'ai 2 entités : GallerieCategorie et GalleryPhoto relié en many-to-one bidirectionnelle.
Voici les extrait de mes entités:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class GalleriePhoto
{
/**
* Date de mise en ligne de la photo
*
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime")
*/
private $date;
/**
* @ORM\ManyToOne(targetEntity="MonBundle\Entity\GallerieCategorie", inversedBy="photos")
* @ORM\JoinColumn(nullable=false)
*/
private $categorie;
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class GallerieCategorie
{
/**
* Liste des photos
*
* @ORM\OneToMany(targetEntity="MonBundle\Entity\GalleriePhoto", mappedBy="categorie")
*/
private $photos;
// il existe pas d'attribut date
/**
* @return \DateTime
* La date de mise en ligne de la photo la plus récente de la catégorie
*/
public function getDate()
{
$dernier = null;
foreach ($this->photos as $photo)
{
if($dernier == null)
$dernier = $photo->getDate();
else if ($photo->getDate() > $dernier)
$dernier = $photo->getDate();
}
return $dernier;
}
} |
Ce que j'aimerais, c'est envoyé à twig la liste des catégorie triée par ordre de la dernière mise a jour (d'où l'utilité de getDate() de la classe GallerieCategorie).
J'ai évidemment essayer ceci depuis le controlleur (en croisant les doigt mais en espérant peu) :
Code:
1 2
| $repository = $this->getDoctrine()->getManager()->getRepository("MonBundle:GallerieCategorie");
$listCategories = $repository->findBy(array(), array("date"=>"DESC"), null, null); |
Y-a-t-il un autre moyen que d'enregistrer en dur la date de la dernière mise à jour lors de l'ajout de photo ?
J'ai pensé à utiliser sort() sur la tableau retourné par le repository mais il faut qu'il fasse la comparaison sur getdate().
Existe-t-il un équivalent du compareTo de java ?
merci d'avance