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

ORM PHP Discussion :

Requête COUNT sur doctrine


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut Requête COUNT sur doctrine
    Bonjour,

    Je cherche un moyen d'avoir les 3 attractions avec le plus de commentaires.

    Suivant cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT a.id, COUNT(c.id) as nbComment
    FROM `attraction` a, `comment` c
    WHERE a.`id` = c.`attraction_id`
    GROUP BY a.id
    ORDER BY nbComment DESC
    LIMIT 0,3
    Y-a t'il moyen avec doctrine pour qu'il me retourne un tableau d'attractions ?

    Merci

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Tu veux savoir comment écrire cette requête en DQL ?

    Ou tu entends quelque chose d'autre par tableau doctrine ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut
    Oui, comment écrire cette requête en DQL, j'ai testé pas mal de trucs, mais le fait de rajouter un COUNT dans mon select fait que du coup je ne reçoit plus un tableau d'attractions comme je le veux.

    Enfin, c'est un truc que je n'arrive pas à conceptualiser en DQL, de l'aide me serait précieuse !

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    La requête devrait ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $q = Doctrine_querry::create()
              ->from( 'attraction a' )
              ->innerjoin( 'a.comment c' )
              ->select( 'a.id, count(c.id) AS nb_comment' )
              ->groupBy( 'a.id' )
              ->orderBy( 'nb_comment DESC' )
              ->limit( 3 )
              ->offset( 0 );
    code non testé et non validé.

    Attention, ceci implique que ton shema.yml soit correctement construit et, notamment, au niveau des relations.

    Ensuite, dans le ->execute() tu as la possibilité de demander un certain nombre d'hydratation des résultats, à toi de trouver celui qui te convient.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut
    Le truc était de retourner une liste d'attraction, j'avais peur qu'avoir un champ "count" supplémentaire aller causer un problème.

    En repartant de ta requête, comme ceci, ça a l'air de fonctionner.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $this->topDestinations = Doctrine_Core::getTable('Attraction')
    ->createQuery('a')
    ->select('a.*, COUNT(c.id) AS nb_comment')
    ->leftJoin('a.Comments c')
    ->groupBy('a.id')
    ->orderBy( 'nb_comment DESC' )
    ->limit(3)
    ->execute();

    Il faudra que me penche vers ces questions d'hydratation pour en voir le fonctionnement à l'occasion.

    Merci Michel encore une fois

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

Discussions similaires

  1. Faire un COUNT sur le résultat d'une requête (dont un UNION)
    Par korospoukine dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/09/2011, 12h50
  2. Réponses: 3
    Dernier message: 26/07/2011, 13h58
  3. une requête avec 2 count sur la même table
    Par epeichette dans le forum Requêtes
    Réponses: 11
    Dernier message: 30/06/2009, 09h19
  4. Réponses: 9
    Dernier message: 19/04/2009, 15h45
  5. 2 requêtes count() sur la même ligne
    Par nanard110 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/08/2007, 15h18

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