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 :

[DOCTRINE]Limiter le nombre d'enregistrements retournés à l'aide d'un Paginator [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Points : 20
    Points
    20
    Par défaut [DOCTRINE]Limiter le nombre d'enregistrements retournés à l'aide d'un Paginator
    Bonjour à tous,

    je tente tant bien que mal d'effectuer une requête auprès de mon cher et tendre repository tout en lui demandant de limiter le nombre de résultats retournés.
    J'ai donc d'abord trouvé la méthode setMaxResults($nombre) mais après avoir constaté que celle-ci fonctionnait pas de la manière souhaitée, j'ai lu dans la doc qu'en effet avec une requête comportant des leftJoin elle n'avait pas le comportement initialement souhaité.

    J'ai donc lu, sur ce même forum, qu'en utilisant un Paginator on réglait nos problèmes, mais malgré son utilisation ma requête ne me retourne pas le bon nombre de résultats (par contre je remarque que quand je change mon $nombre, le nombre de résultats change mais je n'arrive pas à saisir le lien entre le nombre fixé et le nombre retourné)

    Voici comment je m'en sers :

    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
        public function getSomeUnassigned($language, $limit)
        {
            $objQuery = $this
                ->createQueryBuilder('com')->select('com')
                ->leftJoin('com.assignedCaller', 'cal')->addSelect('cal')
                ->leftJoin('com.contacts', 'con')->addSelect('con')
                ->leftJoin('com.answers', 'can')->addSelect('can')
                    ->leftJoin('can.answer', 'ans')->addSelect('ans')
                        ->leftJoin('ans.question', 'que')->addSelect('que')
                        ->leftJoin('ans.translations', 'ant', 'WITH', 'ant.language = :language')->addSelect('ant')
     
                ->where('cal.id is NULL')
                ->andWhere('com.surveyCompleted = false')
     
                ->setParameter('language', $language)
                ->setMaxResults($limit)
     
                ->orderBy('com.name');
     
            return new Paginator($objQuery->getQuery(), $fetchJoin = true);
        }
    }
    Une idée ?

  2. #2
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    Il faut mettre $fetchJoinCollection = false

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 128
    Points : 79
    Points
    79
    Par défaut
    Tu veux faire un système de pagination ou quoi ?

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Points : 20
    Points
    20
    Par défaut
    Merci bilbot, du coup ça marche.

    Non je ne cherchais pas à faire une pagination mais simplement à faire un 'LIMIT' dans ma requête, seulement la méthode ->setMaxResults() sous Doctrine ne marche pas comme on l'espère lorsqu'il y a des left join dans la requête.
    L'usage d'un paginator permet d'éviter ce problème. Merci à tous

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

Discussions similaires

  1. Limiter le nombre d'enregistrements retournés
    Par Sydaze dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/04/2005, 12h33
  2. Réponses: 2
    Dernier message: 13/03/2005, 14h10
  3. Limiter le nombre d'enregistrements renvoyés par un SELECT
    Par Wilco dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/11/2004, 13h47
  4. Limiter le nombre d'enregistrement
    Par BXDSPORT dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/04/2004, 16h26
  5. [débutant] Limitation du nombre d'enregistrement renvoyé
    Par tmcgrady dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/11/2003, 09h41

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