成功将json字符串反序列化为具有关联的Doctrine实体后.在持久化时,Doctrine始终将这些关联检测为"新实体".如何仅通过ID更新关联,如果有任何更改,则不更改相关实体值?
我的情况:
我有一些带有静态数据的数据库表.最简单的是存储单位.(我有一个名为Unit的学说实体).表格是这样的:
|id|name |ratio |
|1 |mgr |1 |
|2 |gr |1000 |
|3 |Kgr |1000000|
Run Code Online (Sandbox Code Playgroud)
然后,用户可以创建一个Item,它也有一个名为Unit的服务器端学说实体.我使用客户端backbone.js模型,并在更新时将其发送到我的Symfony2应用程序,如下所示:
//Item object to be serialized into Item entity
{
id: 13141
weight: 100
unit: {
id:1
name:mgr
ratio:1
}
//many more attributes here
}
Run Code Online (Sandbox Code Playgroud)
现在,我使用JMSSerializer进行反序列化,一切正常,但我希望doctrine只更新关系的Unit ID,而不是整个Unit.
当我坚持下去时,教义抱怨并告诉我他找到了一个"新的单位实体"(这不是我想要的)并告诉我persist在学说实体中设置级联.但是,如果我这样做并且某人修改了单位json,那么这不会改变我的静态单位表吗?
例如:坏用户通过发送以下内容来修改Json:
//BAD item object to be serialized into Item entity
{
id: 13141
weight: 100
unit: {
id:1
name:BadName //Will this get persisted to the database?
ratio:1
}
//many more attributes here
} …Run Code Online (Sandbox Code Playgroud)