DQL查询产生错误Expected Literal,得到'BY'

Gar*_*rry 5 dql doctrine-orm zend-framework2

我遇到了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);
}
Run Code Online (Sandbox Code Playgroud)

上面的查询产生错误,[语法错误]第0行,第91行:错误:预期文字,得到'BY'

生成的DQL是

SELECT u, r FROM Application\Entity\Users u LEFT JOIN Application\Entity\UserRoles r ORDER BY u.emailAddress ASC
Run Code Online (Sandbox Code Playgroud)

有人可以发现这个查询有什么问题,非常感谢.

Gar*_*rry 7

我已经弄清楚了.

问题在于线路

->leftJoin('Application\Entity\UserRoles', 'r')
Run Code Online (Sandbox Code Playgroud)

这应该是

->leftJoin('u.userRole', 'r')
Run Code Online (Sandbox Code Playgroud)

userRole在我的Entity\Users类中定义.