Bonjour à tous !
J'essaie désespérément de créer une requête en DQL sous Doctrine 1.2 qui utilise des jointures imbriquées. La situation est simple : je pars d'une table userprofile qui est liée à une table city (via un city_id), qui est elle même liée à une table country (via un country_id).
J'ai bien créé mes relations dans mon schema dont voici un extrait :
Pour prendre un exemple, j'essaie de créer une requête qui permet d'obtenir le nom de l'utilisateur, ainsi que le nom de sa ville et de son pays.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Userprofile: relations: City: { local: city_id, foreign: id, class: City } City: relations : Country: { local: country_id, foreign: id, class: Country }
Voici les requêtes essayées qui ne fonctionnent pas :
Requête 1 :
Requête 2 (celle-ci, je comprends pourquoi elle ne fonctionne pas) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $q = Doctrine_Query::create() ->select('p.id, p.username, c.name, co.name') ->from('Userprofile p, City c') ->innerJoin('c.Country co)' ->where('p.city_id = c.id')
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $q = Doctrine_Query::create() ->select('p.id, p.username, c.name, co.name') ->from('Userprofile p') ->innerJoin('p.City c)' ->innerJoin('c.Country co)'
Requête 3 :
J'ai fait pas mal d'autres tests de requêtes mais j'aboutis toujours à la même erreur qui est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $q = Doctrine_Query::create() ->select('p.id, p.username, c.name, co.name') ->from('Userprofile p Inner Join p.City c') ->innerJoin('c.Country co)'
Bref, je vais faire comme d'habitude, la remplacer par une requête SQL qui fonctionnera correctement et qui me prendra 3 minutes à écrire. Mais l'objectif était d'utiliser le DQL, histoire de coder plus "proprement" mais visiblement ça ne paye pas toujoursCouldn't find class co
Merci pour votre aide !
Nino
Partager