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

Doctrine2 PHP Discussion :

Une jointure crée une boucle de SELECT


Sujet :

Doctrine2 PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur PHP5
    Inscrit en
    Novembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur PHP5

    Informations forums :
    Inscription : Novembre 2006
    Messages : 63
    Points : 49
    Points
    49
    Par défaut Une jointure crée une boucle de SELECT
    Bonjour,

    J'ai un petit souci avec une requête que j'ai implémentée dans une classe repository (je précise que je débute en Symfony2 et Doctrine). Je vous expose le problème : ce qui pour moi ne représentait qu'une requête est traitée en 5 requêtes SQL par Doctrine. Voilà le code de ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function findHobbiesByUser(\Mcb\UserBundle\Entity\User $user)
    {
    	$results = $this -> createQueryBuilder('ht')
    					 -> select("ht")
    					 -> leftJoin("ht.hobbies", "h", "WITH", "h.user = :user")
    					 	-> setParameter('user', $user)
    					 -> orderBy("ht.hobbyTypeName")
    					 -> getQuery()
    					 -> getResult()
    					 ;
     
    	return $results ;
    }
    La jointure à la ligne 6 semble effectuer un SELECT pour chaque ligne (ce qui se vérifie dans le profiler Symfony 2) : la requete initiale ne recupere que l'id du Hobby et ensuite doctrine boucle sur le résultat de cette requete pour charger chaque Hobby (un peu bête pour une jointure...).

    Dans mon cas, j'ai un peu de chance car je ne souhaite récupérer que 4 lignes quoi qu'il arrive mais si toutes les jointures donne ce genre de boucle ça risque de me poser des problèmes par la suite.

    Savez-vous comment forcer Doctrine à n'effectuer qu'une requete dans ce cas ?

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur PHP5
    Inscrit en
    Novembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur PHP5

    Informations forums :
    Inscription : Novembre 2006
    Messages : 63
    Points : 49
    Points
    49
    Par défaut
    Il a fallu que j'appuie sur le bouton "Créer la conversation" pour que la solution pop dans ma tête...

    devient Résultat final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function findHobbiesByUser(\Mcb\UserBundle\Entity\User $user)
    {
    	$results = $this -> createQueryBuilder('ht')
    					 -> select("ht, h")
    					 -> leftJoin("ht.hobbies", "h", "WITH", "h.user = :user")
    					 	-> setParameter('user', $user)
    					 -> orderBy("ht.hobbyTypeName")
    					 -> getQuery()
    					 -> getResult()
    					 ;
     
    	return $results ;
    }
    Désolé pour le post inutile ! >.<

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

Discussions similaires

  1. Faire une requete avec une jointure ramenant une base SQL et un ebase Oracle
    Par Clement M dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 22/12/2014, 15h13
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 13h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 14h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 14h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48

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