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] Hydratation d'objets sur une autre table que celle du FROM


Sujet :

ORM PHP

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [Doctrine] Hydratation d'objets sur une autre table que celle du FROM
    Bonjour,

    Depuis quelques temps je me questionne sur un comportement de Doctrine, et n'arrivant pas à trouver de résultat, je me permets de vous demander votre avis.

    Sur mon application, je suis souvent amenés à faire des requêtes qui ont la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $coms = Doctrine_Core::getTable('Commentaire')
    ->createQuery('c')
    ->join('c.article a')
    ->join('a.Redacteurs r')
    ->where('r.quelquechose = ?', $quelquechose);
    On veut donc récupérer les commentaires des articles dont le rédacteur répond à une certaine condition. On part de la table commentaire ( car on veut obtenir une collection de commentaires à la fin ), puis on la join à tous les articles puis à tous les rédacteurs, et enfin on réduit les résultat avec la condition.

    Cette requête serait beaucoup plus optimisée avec les jointures dans cet ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $coms = Doctrine_Core::getTable('Redacteur')
    ->createQuery('r')
    ->select('c.*')
    ->join('r.Article a')
    ->join('a.Commentaires c')
    ->where('r.quelquechose = ?', $quelquechose);
    De cette manière, le nombre de tuples manipulés par les jointures est beaucoup plus réduit, vu que la restriction sur le rédacteur va s'effectuer dés le début.

    Le problème est que de cette manière, j'obtient un magnifique :
    The root class of the query (alias r) must have at least one field selected.
    Existe-t'il une solution pour garder cet ordre dans les jointures et obtenir tout de même une collection doctrine d'objets commentaire ?

    Merci !
    Dernière modification par Invité ; 24/07/2010 à 18h03.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/01/2014, 01h24
  2. Réponses: 5
    Dernier message: 10/12/2012, 12h20
  3. Réponses: 2
    Dernier message: 12/01/2011, 08h21
  4. Réponses: 7
    Dernier message: 01/09/2007, 15h27
  5. pb d'insertion avec un SELECT sur une autre table
    Par epeichette dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/01/2005, 22h58

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