Php Symfony2-表单集合中的数字字段触发数据库更新
我有两个实体,叫做预订和房间。房间作为集合嵌入到预订表单中。一切正常 然后,我将SimpleThings/EntityAuditBundle安装到记录的版本更改中。这一切都很好,正如预期的一样,除了一件事 假设我预订了两个房间。我编辑了预订,但没有对表单进行任何更改,并将其保存。奇怪-room_audit表现在有一条记录说我通过嵌入的表单集合等将其值更改为一条room记录,但在保存之前我没有做任何更改 然后通过反复试验,我确定如果我从RoomType embedded集合(货币表单类型)中删除price form字段,则不会显示此附加审核记录。如果我将price字段类型更改为numeric,则在保存时它会再次出现。如果我随后将字段类型更改为文本,则此附加记录将停止显示 总结 似乎在嵌入式表单集合中使用数字字段类型(如货币或数字)会强制触发更新前生命周期回调,即使在没有任何要更新的内容时也是如此,因为没有进行任何更改。将字段类型更改为text,则不会调用preUpdate处理程序,除非表单中的值发生更改 有人知道为什么这种行为似乎是基于使用数字形式的字段类型吗 我在MySQL上使用Symfony2.5.2标准版和PHP5.5.9Php Symfony2-表单集合中的数字字段触发数据库更新,php,forms,symfony,doctrine,ipreupdateeventlistener,Php,Forms,Symfony,Doctrine,Ipreupdateeventlistener,我有两个实体,叫做预订和房间。房间作为集合嵌入到预订表单中。一切正常 然后,我将SimpleThings/EntityAuditBundle安装到记录的版本更改中。这一切都很好,正如预期的一样,除了一件事 假设我预订了两个房间。我编辑了预订,但没有对表单进行任何更改,并将其保存。奇怪-room_audit表现在有一条记录说我通过嵌入的表单集合等将其值更改为一条room记录,但在保存之前我没有做任何更改 然后通过反复试验,我确定如果我从RoomType embedded集合(货币表单类型)中删除p
谢谢在处理包含文本字段的实体表单集合时,我遇到了一个非常类似的问题。如果我加载了要编辑的表单,但没有进行任何更改,它仍然会为集合中的所有实体安排更新 我发现在我的Doctrine2注释中——定义实体时——属性被声明为整数——而不是varchar。当我将表单字段更改为整数时,表单处理程序不再尝试更新集合中的所有实体 因此-也许您应该查看Doctrine2注释,并确保表单字段类型与数据库模式匹配