2011-11-25 11 views
12

Sono nuovo in Symfony2, non so come scrivere una query di seguito in Symfony2 utilizzando createQuery()Symfony2 Dottrina interrogazione

select * from Post inner join Category on Post.category_id=Category.id inner join Priority on Post.priority_id=Priority.id order by priority_number desc 

ho usato classe repository, in cui, ha scritto una funzione

public function findAllOrderedByPriorityPost() 
    { 

     return $this->getEntityManager() 
       ->createQuery('select p,c,pr from RodasysfourmBundle:Post p inner join 
RodasysfourmBundle:Category c inner join RodasysfourmBundle:Priority pr order by pr.priorityNumber desc') 
       ->getResult(); 
    } 

quando ho usato questa funzione, ho avuto l'errore sotto

[Semantical Error] line 0, col 85 near 'c inner join': Error: Identification Variable RodasysfourmBundle:Category used in join path expression but was not defined before. 

anche quale metodo è migliore usando questa query in un reposito personalizzato ry o come servizio?

qualsiasi aiuto apprezzato.

risposta

9

DQL in Doctrine2 non saprà come unire le tabelle se si specifica il nome di un'entità di riferimento. Puoi lavorare solo con un'entità e i suoi campi (che possono avere relazioni).

select p,c,pr from RodasysfourmBundle:Post p inner join 
p.Category c inner join c.Priority pr order by pr.priorityNumber desc 
Problemi correlati