doctrine DQL查询错误:字符串的预期结束,得到了' *'

时间:2014-04-11 09:59:10

标签: doctrine dql

我有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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

是:变量肯定是一个数字(int / float)?如果它是一个字符串,则可能是它无法生成语法正确的查询:

更新一些表格t SET t.column ='1'* 100;

然而,首先带有数字“100 *:variable”和“1 *:variable * 100”的版本可以正确地转换它,因为首先存在整数。

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

答案 1 :(得分:0)

该问题与 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 中描述。