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 :
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...).
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 ; }
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 ?
Partager