Запрос по запросу Symfony2 Doctrine
Я новичок в 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
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
Ответ 2
Я думаю, что эта ссылка могла бы ответить на ваш вопрос: Ошибка: идентификационная переменная, используемая в выражении пути соединения, но не была определена до