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 ?