2010-06-14 16 views
2

Je suis nouveau à la doctrine: J'ai un problème avec le tri des enregistrements joints.PHP: Doctrine: ordre joint enregistrements

Un échantillon.

J'ai un modèle Article associé à un modèle Source dans 1 < -> n. Le modèle source a une propriété appelée «position» avec une valeur entière.

Maintenant, je veux aller chercher un article avec ses sources d'ordres par la position. Mon DQL ressemble à ceci:

$q = Doctrine_Query::create() 
    ->select('a.title, s.content') 
    ->from('Article a') 
    ->leftJoin('a.Source s') 
    ->where('a.id = ?') 
    ->orderBy('s.position'); 

Le résultat ne change pas si je modifie la position.

Meilleures salutations, Sebastian

+0

J'ai le même problème ... toujours pas solutin: / –

Répondre

0

Hmm ... il devrait le faire. Peut-être essayer l'un ou l'autre:

->orderBy('s.position DESC') 
->orderBy('s.position ASC') 
0

Oui, cela semble correct. Essayez de générer le SQL à partir du DQL avec getSqlQuery() et interrogez la base de données avec le résultat. S'il y a encore une mauvaise sortie, cela peut se faire par un problème avec les données ou plus vraisemblablement, avec le DQL.

0

Peut-être que vous devriez inclure la colonne que vous utilisez pour la commande (S.POSITION), alors essayez ceci:

$q = Doctrine_Query::create() 
->select('a.title, s.content, s.position') 
->from('Article a') 
->leftJoin('a.Source s') 
->where('a.id = ?') 
->orderBy('s.position');