我遇到DQL查询问题,无法从MySql数据库中检索用户和角色。我正在使用Zend Framework 2和Doctrine 2。
查询如下。
public function getUsers()
{
$builder = $this->getEntityManager()->createQueryBuilder();
$builder->select('u, r')
->from('Application\Entity\Users', 'u')
->leftJoin('Application\Entity\UserRoles', 'r')
->orderBy("u.emailAddress", "ASC");
InfoLogger::vardump($builder->getDQL());
return $builder->getQuery()->getResult(Query::HYDRATE_OBJECT);
}
以上查询产生错误,[语法错误]第0行,第91行:错误:预期文字,得到' BY'
生成的DQL是
SELECT u, r FROM Application\Entity\Users u LEFT JOIN Application\Entity\UserRoles r ORDER BY u.emailAddress ASC
有人可以查看此查询的错误,非常感谢。
答案 0 :(得分:7)
我已经弄清楚了。
问题在于
行->leftJoin('Application\Entity\UserRoles', 'r')
这应该是
->leftJoin('u.userRole', 'r')
userRole在我的Entity \ Users类中定义。