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 :

Ajouter une limite dans une requête


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Par défaut Ajouter une limite dans une requête
    Bonjour,

    Je veux ajouter une limite dans une requête de mon repo mais quand j'ajoute ->setMaxResults(3) rien ne change ! j'ai toujours autant d'items... je n'ai aucun message d'erreur non plus

    Voici une partie de mon repo :

    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
        /**
         * @return Query
         */
        public function findAllVisibleQuery(AdSearch $search): Query
        {
            $query = $this->findVisibleQuery();
     
            if ($search->getLat() && $search->getLng() && $search->getDistance()) {
                $query = $query
                    ->select('a')
                    ->andWhere('(6353 * 2 * ASIN(SQRT( POWER(SIN((a.lat - :lat) *  pi()/180 / 2), 2) +COS(a.lat * pi()/180) * COS(:lat * pi()/180) * POWER(SIN((a.lng - :lng) * pi()/180 / 2), 2) ))) <= :distance')
                    ->andWhere('a.category = :category')
                    ->setParameter('lng', $search->getLng())
                    ->setParameter('lat', $search->getLat())
                    ->setParameter('distance', $search->getDistance())
                    ->setParameter('category', $search->getCategory())
                    ;
            }
     
            return $query->getQuery();
        }
     
        private function findVisibleQuery(): QueryBuilder
        {
            return $this->createQueryBuilder('a')
                ->where('a.publishedAt != false')
                ->setMaxResults(2) // rien ne change ! pourquoi ? :/
                ;
        }
    une idée ? je vous remercie

  2. #2
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Ingénieur DevOps
    Inscrit en
    Mai 2002
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 214
    Par défaut
    Bonjour,

    C'est la bonne méthode pour limiter le nombre de résultat. Tu dois avoir :
    • soit un problème de cache,
    • soit ton code ne passe pas par ta méthode,
    • soit le query que tu retourne est à nouveau modifier par la suite et la méthode setMaxResults est appelée à nouveau avec une autre valeur.


    Je te conseille de purger le cache avant de recharger ta page et d'ajouter temporairement un "debug and die" (dd) dans ta méthode pour éliminer les deux premières pistes. Dis-nous ce que cela donne.
    Alexandre Tranchant
    Ingénieur DevOps pour le Ministère de l'Écologie
    Retrouvez mes articles sur PHP et Symfony

  3. #3
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Par défaut
    Salut, je te remercie pour ta réponse,

    malheureusement je suis toujours bloqué après des jours de recherche ! apparemment d’après le tuto que j'ai suivi pour faire la partie de géolocalisation (qui fonctionne très bien), l'auteur indique que ce n'est pas possible d'utiliser un AS dans cette requête alors après.. je ne sais pas du tout pourquoi

    note : le tuto est payant, je peux up la vidéo quelque part si tu veux.

    merci encore.

  4. #4
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Ingénieur DevOps
    Inscrit en
    Mai 2002
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 214
    Par défaut
    Non, non, s'il s'agit d'un tutoriel payant, il ne faut pas l'uploader ailleurs, question de droit. Mais visiblement c'est bien ce que je pensais, leaflet ou la librairie qui est utilisée va rappeler la méthode setMaxResults et écraser ce que tu as fait. Il te reste plusieurs solutions :
    • passer en mode debugage et exécuter pas à pas ton code pour trouver ce qui rappelle cette valeur,
    • créer un listener qui va choper la requête juste avant son exécution et la "reremodifier", mais cela revient un peu à chasser les mouches au lance-flamme !
    Alexandre Tranchant
    Ingénieur DevOps pour le Ministère de l'Écologie
    Retrouvez mes articles sur PHP et Symfony

  5. #5
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Par défaut
    désolé je parle de As sur ce sujet alors que c’était pour l'autre sujet désolé comme je suis bloqué sur différents problèmes dans une même partie de code je me suis mélangé.
    c'est peut-être le KnpPaginatorBundle qui modifie la requête ? bizarre cette histoire de ne pas pouvoir ajouter un setMaxResults

  6. #6
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Ingénieur DevOps
    Inscrit en
    Mai 2002
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 214
    Par défaut
    Oui le KnpPaginatorBundle le fait toujours.
    Alexandre Tranchant
    Ingénieur DevOps pour le Ministère de l'Écologie
    Retrouvez mes articles sur PHP et Symfony

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/03/2020, 11h26
  2. Réponses: 2
    Dernier message: 20/09/2011, 09h58
  3. [WD11] Ajouter une requête Update à une application RAD
    Par kandevamara dans le forum WinDev
    Réponses: 5
    Dernier message: 17/06/2010, 12h58
  4. Ajouter une requête dynamiquement à une BD ACCESS
    Par dsolheid dans le forum VB.NET
    Réponses: 7
    Dernier message: 19/10/2008, 16h26
  5. Ajouter une requête dynamiquement à une BD ACCESS
    Par dsolheid dans le forum VBA Access
    Réponses: 5
    Dernier message: 19/10/2008, 15h05

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