-
[Doctrine] Jointures
Bonjour,
débutant avec Symfony, j'ai actuellement quelques problèmes avec l'utilisation de Doctrine.
Si je crée par exemple la requête suivante :
Code:
$q=Doctrine_Query::create()->select('p.personne_id,n.niveau_privilege_libelle')->from('Personne p')->leftJoin('NiveauPrivilege n')->where('p.personne_login=?',$login)->andWhere('p.personne_pass=?',hash('sha512',$pass));
A ce moment là, la requête générée par Doctrine ne correspond pas à ce que je lui demande :
Code:
SELECT p.personne_id AS p__personne_id FROM ...
Le reste est correct, mais comme vous pouvez le voir, seul le champ personne_id est présent dans le SELECT.
En faisant la jointure à la main avec des WHERE, le champ niveau_privilege_libelle est bien dans la requête générée, mais une Doctrine_Hydrator_Exception fait son apparition ("xxx" with an alias of "x" in your query does not reference the parent component it is related to.).
Ai-je mal fait quelque chose ? Sachant qu'une requête plus simple marche correctement, j'ai l'impression que c'est la jointure qui est source de problèmes.
Merci d'avance. ;)
-
A priori, la parie "->leftJoin('NiveauPrivilege n')" est fausse, elle devrait être plutôt du type "->leftJoin('p.NiveauPrivilege n')"
Pour en être sur, il serait bien que tu nous mette ton shema.yml.
Vu que tu es sous symfony, j'ai rapatrié la discutions ici.
-
Effectivement, l'erreur était bien dans le leftJoin, j'ai maintenant un problème pour accéder aux champs de la table NiveauPrivilege dans les résultats, mais je devrais pouvoir trouver la réponse sans trop de problèmes pour ça.
Encore merci :ccool: