bonjour à tous,
alors mon petit problème avec Doctrine.
j'ai troistables dans ma base :
utilisateur
-----------
idutilisateur
nom
prenom
article
------------
idcontenu
detail
contenu
-----------
idcontenu
titre
publie
datecreation
datemodification
idutilisateurcreation
idutilisateurmodification
dans la table contenu j'ai deux clé étrangères vers la table utilisateur sur idutilisateurcreation et idutilisateurmodification.
voici la requête doctrine que j'exécute pour obtenir les données de l'article avec celles de son contenu et des utilisateurs ayant intervenu.
voici la requête SQL générée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $q = Doctrine_Query::create() ->select('a.*, c.*, uCrea.*, uModif.*') ->from('Articles a') ->leftJoin('a.Contenus c') ->leftJoin('c.Utilisateurs uCrea ON uCrea.idutilisateur=c.idutilisateurcreation') ->leftJoin('c.Utilisateurs uModif ON uModif.idutilisateur=c.idutilisateurmodification') ->where('a.idcontenu=?', $idcontenu);
la requête SQL générée remonte bien toutes données attendus, u et u2 correspondant respectivement à l'utilisateur création et à l'utilisateur modification.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SELECT a.idcontenu AS a__idcontenu, a.detail AS a__detail, c.idcontenu AS c__idcontenu, c.titre AS c__titre, c.publie AS c__publie, c.datecreation AS c__datecreation, c.datemodification AS c__datemodification, c.idutilisateurcreation AS c__idutilisateurcreation, c.idutilisateurmodification AS c__idutilisateurmodification, u.idutilisateur AS u__idutilisateur, u.email AS u__email, u.nom AS u__nom, u.prenom AS u__prenom, u2.idutilisateur AS u2__idutilisateur, u2.email AS u2__email, u2.nom AS u2__nom, u2.prenom AS u2__prenom FROM articles a LEFT JOIN contenus c ON a.idcontenu = c.idcontenu LEFT JOIN utilisateurs u ON (u.idutilisateur = c.idutilisateurcreation) LEFT JOIN utilisateurs u2 ON (u2.idutilisateur = c.idutilisateurmodification) WHERE (a.idcontenu = ?)
par contre lorsque j'exécute la version DQL et que j'affiche le résultat sous forme de tableau, seul les données de l'utilisateur création sont remontées :
si quelqu'un a déjà manipulé ce genre de requête avec Doctrine et qu'il a trouvé comment faire pour avoir toutes les données je suis à votre écoute .
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 Array ( [idcontenu] => 2 [detail] => detail [Contenus] => Array ( [idcontenu] => 2 [titre] => article 1 [publie] => 0 [datecreation] => 2010-04-20 00:00:00 [datemodification] => 2010-04-20 00:00:00 [idutilisateurcreation] => 1 [idutilisateurmodification] => 2 [Utilisateurs] => Array ( [idutilisateur] => 1 [email] => toto@gmail.com [nom] => mobile [prenom] => toto ) ) )
Partager