在 DQL 中将整数转换为小数

Cast integer to decimal in DQL

我将 Doctrine 与 Postgres 数据库一起使用,并想更新整数字段 "voting"。 它是一个概率值,保存为 0 到 100 之间的整数,基于两个整数字段 "voteCountPro" 和 "voteCount"。 我必须将其中一个整数转换为十进制值。 (参见:) 这在 DQL 中不起作用并且失败并显示消息:

[Syntax Error] line 0, col 363: Error: Expected Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS, got ':'

UPDATE statement s
SET s.voting = (s.voteCountPro::decimal / s.voteCount) * 100
WHERE s.id = :id

如何设置值?

安装https://github.com/oroinc/doctrine-extensions,注册CAST函数,写入:

UPDATE statement s
SET s.voting = (CAST(s.voteCountPro as decimal) / s.voteCount) * 100
WHERE s.id = :id