2013-06-02 4 views
0

J'ai un petit problème:OrderBy et Relation OneToMany

entité Mod en relation avec Vue sur OneToMany entité.

  • Mod
    • View (vues pour une journée)
    • Voir
    • Voir

Je voudrais obtenir les mods et les trier par nombre de vues. Le problème est qu'avec le code ci-dessous, le tri est incorrect et ORDER BY m.views ne fonctionne pas.

public function getWeeklyModsMostViewed($number = null) 
{ 
    $query = $this->_em->createQuery(

    "SELECT m 
    FROM KynaModsBundle:Mods m 
    LEFT JOIN m.views v 
    WHERE v.date > :dateLimit 
    ORDER BY v.views DESC 
    " 
    )->setParameter('dateLimit', new \dateTime('-7days')) 
    ->setMaxResults($number); 

    return $query->getResult(); 

Pouvez-vous m'aider s'il vous plaît? Merci.

+0

Vous devez probablement ajouter 'v' à la clause select. – AdrienBrault

Répondre

0

Vous pouvez commander une collection d'objets avec l'annotation ORM (que vous ajoutez à votre entité)

@ORM \ OrderBy ({ "vues" = "DESC"})

et vous faites votre demande comme:

SELECT m DE KynaModsBundle: Mods m LEFT JOIN m.views v OÙ v.date>: dateLimit

Questions connexes