【问题标题】:doctrine DQL query Error: Expected end of string, got '*'学说 DQL 查询错误:预期的字符串结尾,得到 '*'
【发布时间】:2014-04-11 09:59:10
【问题描述】:

我有抛出此异常的 DQL 查询:

[Doctrine\ORM\Query\QueryException] Error: Expected end of string, got '*'

这里是查询:

UPDATE Bundle:Table t SET t.column = :variable * 100

我不明白这个查询的问题,这两个正在工作:

UPDATE Bundle:Table t SET t.column = 100 * :variable
UPDATE Bundle:Table t SET t.column = 1 * :variable * 100

有什么想法吗?

【问题讨论】:

    标签: doctrine dql


    【解决方案1】:

    :variable 绝对是一个数字(int/float)吗?如果它是一个字符串,那么它可能无法生成语法正确的查询:

    更新某个表 t SET t.column = '1' * 100;

    而数字开头的版本可能是“100 * :variable”和“1 * :variable * 100”可以正确转换它,因为首先有一个整数。

    也许您可以发布您的 setParameter() 并检查您是否可以调用 getSQL() 来查看构造的 SQL 查询的样子。

    【讨论】:

      【解决方案2】:

      该问题与https://github.com/doctrine/orm/issues/8011 有关,直到今天才解决。

      很有可能

      UPDATE Bundle:Table t SET t.column = ((:variable * 100))
      

      会成功并让解析器正确处理表达式。这已在https://github.com/doctrine/orm/issues/8011#issuecomment-758492375 中进行了描述。

      【讨论】:

      • 哇,我不记得我当时在做什么了!仍然,有趣的是:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 2019-12-20
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      相关资源
      最近更新 更多