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 :

Problème de OrderBy avec le Query Builder


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Points : 16
    Points
    16
    Par défaut Problème de OrderBy avec le Query Builder
    Bonjour,

    J'ai un petit problème avec le query builder, je n'arrive pas à trier les résultats avec un count.

    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $qb = $this->createQueryBuilder('p');
    $qb->addSelect($qb->expr()->count('o'))
    ->addSelect($qb->expr()->min('o.prix'))
    ->addSelect($qb->expr()->max('o.prix'))
    ->addSelect('m')
    ->addSelect('o')
    ->innerJoin('p.marque', 'm')
    ->leftJoin('p.offres', 'o')
    ->addGroupBy('p')
    ->addOrderBy($qb->expr()->count('o'), 'DESC');
    Avec cette requête, j'obtiens l'erreur 500 suivante :
    [Syntax Error] line 0, col 215: Error: Expected end of string, got '('

    Quand j'enlève mon addOrderBy, ma requête fonctionne.

    Merci de votre aide.

  2. #2
    Membre régulier Avatar de khand
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2008
    Messages : 120
    Points : 118
    Points
    118
    Par défaut
    Salut,

    A tout hasard, c'est pas un Having que tu dois mettre avec ton Count ? :o

    Bonne journée
    "Rather than love, than monney, than faith, than
    fame, than fairness, give me truth."

  3. #3
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Non le Having sert à filtrer les résultats par ex HAVING COUNT(*) > 0
    Merci quand même

  4. #4
    Membre régulier Avatar de khand
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2008
    Messages : 120
    Points : 118
    Points
    118
    Par défaut
    Désolé, je pensais que c'était ce que tu voulais faire

    Bonne journée
    "Rather than love, than monney, than faith, than
    fame, than fairness, give me truth."

  5. #5
    Membre régulier Avatar de khand
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2008
    Messages : 120
    Points : 118
    Points
    118
    Par défaut
    Je suis étonné quand sans l'OrderBy ca fonctionne en voyant le paramètre de ton GroupBy. Tu dois théoriquement mettre une élément de ton sélect.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $qb->expr()->count('o'))
    $qb->expr()->min('o.prix'))
    $qb->expr()->max('o.prix'))
    'm'
    'o'
    Or ici tu fais un

    "Rather than love, than monney, than faith, than
    fame, than fairness, give me truth."

  6. #6
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Ce n'est pas nécessaire de mettre un élément du select, c'est une sorte de raccourci j'aurai pu mettre également ->addGroupBy('p.id'), ça aurai fonctionné aussi.

  7. #7
    Membre régulier Avatar de khand
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2008
    Messages : 120
    Points : 118
    Points
    118
    Par défaut
    Bon à savoir.

    Autant pour moi Je ne peux de toute évidence pas t'aider
    "Rather than love, than monney, than faith, than
    fame, than fairness, give me truth."

Discussions similaires

  1. Select union avec le query builder
    Par denis1969 dans le forum Doctrine2
    Réponses: 1
    Dernier message: 05/07/2013, 16h15
  2. [2.x] Supprimer une liste de valeur avec un Query Builder
    Par pmithrandir dans le forum Symfony
    Réponses: 1
    Dernier message: 02/06/2013, 20h09
  3. Problème à la liaison avec LMDTools SE et Builder 2006
    Par Bodom-Child dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/02/2007, 15h11
  4. Réponses: 3
    Dernier message: 26/04/2006, 21h45
  5. Réponses: 1
    Dernier message: 29/10/2003, 12h16

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