【问题标题】:Symfony Doctrine QueryException Expected Literal, got 'WHERE'Symfony Doctrine QueryException 预期文字,得到 'WHERE'
【发布时间】:2016-02-18 14:19:57
【问题描述】:

我在存储库类中使用 entityManager->createQuery() 时遇到问题。

public function findAllByDateAndUser( \DateTime $from, \DateTime $to, User $user ) {
    return $this->getEntityManager()->createQuery(
        'SELECT wu, a, ai
         FROM ArpanetCompanyWorkBundle:WorkerUsage wu
         JOIN ArpanetCompanyWorkBundle:AttendanceItem ai WITH ( wu.attendanceItem = ai )
         JOIN ArpanetCompanyWorkBundle:Attendance a WITH ( ai.attendance = a )
         WHERE wu.user = :userP
         AND WHERE a.date >= :fromP
         AND WHERE a.date <= :toP'
    )
    ->setParameter( 'userP', $user )
    ->setParameter( 'fromP', $from )
    ->setParameter( 'toP', $to )
    ->getResult();
}

我遇到了一个错误:

[2/2] QueryException: [Syntax Error] line 0, col 344: Error: Expected Literal, got 'WHERE'

问题出在哪里?

我知道这可以通过使用查询生成器来完成,但由于性能原因,我需要通过一个数据库查询来获取所有实体。

【问题讨论】:

  • 你用的是什么数据库引擎?
  • 在这种情况下,您似乎使用了错误的查询语法。您只需要一个WHERE,而不是WHERE ... AND WHERE。我对JOIN WITH的语法也不熟悉,不应该是JOIN ON吗?
  • 你试过不带括号的join with 吗?你会使用查询构建器吗?
  • AND WHERE 是个问题。非常感谢!

标签: php symfony doctrine-orm createquery


【解决方案1】:

问题在于使用AND WHERE 而不仅仅是AND

【讨论】:

    猜你喜欢
    • 2012-08-17
    • 2022-01-21
    • 2015-04-08
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多