我有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
有什么想法吗?
答案 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 中描述。