2011-11-25 16 views
12

Jestem nowy w Symfony2, nie wiem jak napisać poniżej kwerendy w Symfony2 korzystając createQuery()Symfony2 Doktryna zapytania

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 

użyłem klasy repozytorium, w którym pisał funkcję

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(); 
    } 

gdy użyłem tej funkcji, mam poniżej błąd

[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. 

również która metoda jest najlepsza przy użyciu tej kwerendy w niestandardowym reposito ry lub jako usługa?

każda pomoc doceniona.

Odpowiedz

9

DQL w doctrine2 nie będzie wiedział, jak do łączenia tabel jeśli podasz nazwę wskazanej jednostce. Możesz pracować tylko z jednym obiektem i jego polami (które mogą mieć relacje).

select p,c,pr from RodasysfourmBundle:Post p inner join 
p.Category c inner join c.Priority pr order by pr.priorityNumber desc 
Powiązane problemy