Symfony2 Doctrine запрос - PullRequest
       4

Symfony2 Doctrine запрос

12 голосов
/ 25 ноября 2011

Я новичок в symfony2, я не знаю, как написать приведенный ниже запрос в symfony2, используя createQuery ()

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

Я использовал класс репозитория, в котором написал функцию

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

когда я использовал эту функцию, я получил ошибку ниже

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

Кроме того, какой метод лучше всего использовать этот запрос в пользовательском хранилище или в качестве службы?

любая помощь приветствуется.

1 Ответ

9 голосов
/ 25 ноября 2011

DQL в doctrine2 не будет знать, как объединять таблицы, если вы укажете имя ссылочной сущности. Вы можете работать только с одной сущностью и ее полями (которые могут иметь отношения).

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