3 votes

PHP : Doctrine : ordonner les enregistrements joints

Je suis nouveau dans la doctrine : J'ai un problème avec le tri des enregistrements joints.

Un échantillon.

J'ai un modèle Article qui est 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 récupérer un article avec ses sources ordonnées par la position. Ma 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

0voto

Tom Points 10295

Hmm... ça devrait aller. Peut-être essayer l'un ou l'autre :

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

0voto

DrColossos Points 7903

Oui, ça semble correct. Essayez de générer le SQL à partir du DQL avec getSqlQuery() et interroger la base de données avec le résultat. Si le résultat est toujours erroné, il peut s'agir d'un problème avec les données ou, plus probablement, avec le DQL.

0voto

jävi Points 2327

Vous devriez peut-être inclure la colonne que vous utilisez pour le classement (s.position), essayez donc 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');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X