IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

trier les entités sans utiliser de colonne [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Hello,

    Quelque chose qui ressemblerait approximativement à ça, ça ne te donne le résultat escompté ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // CategoryRepository
    $qb = $this->createQueryBuilder('c');
    return $qb
        ->join('c.photos', 'p')
        ->orderBy('p.date', 'desc')
        ->groupBy('c.id')
        ->getQuery()
        ->getResult()
    ;

  3. #3
    Membre confirmé
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Par défaut
    Super merci beaucoup.

    Je réfléchi trop objet et oubli mes bases SQL.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Eviter les doublons sans utiliser de Set
    Par andlio dans le forum Hibernate
    Réponses: 3
    Dernier message: 31/08/2011, 14h38
  2. Réponses: 1
    Dernier message: 07/06/2010, 18h05
  3. [XL-2003] TCD, Afficher les éléments sans données en colonnes
    Par beb1982 dans le forum Excel
    Réponses: 4
    Dernier message: 16/04/2009, 13h38
  4. masquer les doublons sans utiliser distinct
    Par Misato dans le forum IHM
    Réponses: 3
    Dernier message: 07/06/2007, 11h06
  5. trier une combox sans affecter la colonne source?[15/02/2007]
    Par gromorice dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/02/2007, 15h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo