当十进制列映射到类型提示浮点数 属性 时,即使未更改,学说也会更新字段
When a decimal column is mapped to a typehinted float property, doctrine updates a field even if not changed
我有一个用户 class,字段为
/**
* @ORM\Column(type="decimal", precision=12, scale=6)
*/
private float $credit = 0;
或使用 php8,相同的行为:
private int|float $credit = 0;
如果我加载一个用户,即使不做任何更改,在下一次 flush() 时,学说将发送一个查询来更新其信用:
(这是非常危险的,因为演职员表可能同时被另一个脚本更改,从而恢复更改。演职员表不应该直接从应用程序编辑,甚至没有 setCredit( ) 方法... )
通过在 preUpdate() 方法中添加一些转储,我发现该值已更改为:
"-10746.000000"
(字符串)
收件人:
-10746.000000
(浮动)
如果我删除私有 属性:
上的类型提示,则不会发生这种情况
private $credit = 0; // Working, credit is not updated to db
为什么会这样?我是做错了什么还是应该将其报告为错误?
我有一个用户 class,字段为
/**
* @ORM\Column(type="decimal", precision=12, scale=6)
*/
private float $credit = 0;
或使用 php8,相同的行为:
private int|float $credit = 0;
如果我加载一个用户,即使不做任何更改,在下一次 flush() 时,学说将发送一个查询来更新其信用:
(这是非常危险的,因为演职员表可能同时被另一个脚本更改,从而恢复更改。演职员表不应该直接从应用程序编辑,甚至没有 setCredit( ) 方法... )
通过在 preUpdate() 方法中添加一些转储,我发现该值已更改为:
"-10746.000000"
(字符串)
收件人:
-10746.000000
(浮动)
如果我删除私有 属性:
上的类型提示,则不会发生这种情况private $credit = 0; // Working, credit is not updated to db
为什么会这样?我是做错了什么还是应该将其报告为错误?