2011-11-25 31 views
12

Soy nuevo en Symfony2, no sé cómo escribir una consulta a continuación en Symfony2 usando CreateQuery()Symfony2 Doctrina consulta

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 

Solía ​​clase repositorio, en el cual, escribió una función

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

cuando utilicé esta función, tengo el siguiente error

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

también qué método es mejor utilizando esta consulta en un reposito personalizada ¿o como un servicio?

cualquier ayuda apreciada.

Respuesta

9

DQL en Doctrine2 no sabrá cómo unirse a las tablas si se especifica el nombre de una entidad de referencia. Solo puede trabajar con una entidad y sus campos (que pueden tener relaciones).

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