doctrine-orm - DQL 查询产生错误预期文字,得到 'BY'

标签 doctrine-orm zend-framework2 dql

我在使用 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);
}

上面的查询产生错误,[语法错误] line 0, col 91: Error: Expected Literal, got 'BY'

生成的 DQL 是
SELECT u, r FROM Application\Entity\Users u LEFT JOIN Application\Entity\UserRoles r ORDER BY u.emailAddress ASC

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

最佳答案

我已经想通了。

问题出在线路上

->leftJoin('Application\Entity\UserRoles', 'r')

这应该是
->leftJoin('u.userRole', 'r')

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

关于doctrine-orm - DQL 查询产生错误预期文字,得到 'BY',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28460681/

相关文章:

php - 我如何编辑带有附件的表单 [Symfony]

php - 原则 2 - 如何获取 PostPersist 中最后插入的 id?

php - 将 mysql 查询转换为 zend 查询?

Symfony/Doctrine - Twig_Error_Runtime : Catchable Fatal Error: Object of class Doctrine\ORM\PersistentCollection could not be converted to string

symfony - 如何在 Symfony2 中进行 LIKE 数据库查询

php - 为什么我在引入属性类型提示时突然收到 "Typed property must not be accessed before initialization"错误?

doctrine-orm - 学说查询+LIKE表达式

zend-framework2 - 在 zend Framework 2 的自定义帮助器中使用另一个模块

php - ZF2 - 在调度监听器中设置 cookie

php - 如何在 Symfony 2.8 中的表单存储库中获取用户对象