IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ORM PHP Discussion :

[Doctrine] Jointures


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Par défaut [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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    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.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Doctrine] [Débutant] Symfony2, Doctrine Jointures
    Par JackStrieger dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 04/05/2013, 09h52
  2. [Doctrine] Jointure + COUNT en DQL ?
    Par Galdon dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 26/09/2011, 15h34
  3. [Doctrine] Exécution d'une jointure externe
    Par christophetd dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/12/2009, 10h26
  4. [MySQL] [Doctrine] Jointure sans relation
    Par Cladjidane dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/09/2009, 06h41
  5. [Doctrine] Jointures
    Par cornnery dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 06/04/2009, 13h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo