我有这样的json:
"relatedCollection": [
{
id:1,
name: "something",
country: {
id:1
}
},
{
id:2,
name: "something 2",
country: {
id:1
}
}
]
在数据库中存在共同国家/地区的两个相关项目。如果我使用JMSserializer反序列化,并且它会创建两个不同的COUNTRY实体实例。
当您使用doctrine应用合并时,请将country设置为“something”,但不要设置为“something 2”。所以保存后的结果是:
"relatedCollection": [
{
id:1,
name: "something",
country: {
id:1
}
},
{
id:2,
name: "something 2",
country: null
}
]
对于Doctrine,有两个名为Country的实体已分离。并且学说附加第一个并正确保存但不是第二个。
当您使用相同的相关实体ID合并集合时,这仅发生在关系ManyToOne上。 如果你保存国家1和国家2,那么没有重复的国家,所以保存财产。
任何解决方案?
答案 0 :(得分:1)
JMS Serializer只进行对象反序列化,它不会为你处理doctrine对象。
您必须进行任何类型的合并,级联合并,例如
您可以编写反序列化Listener \ Subscriber来自动为您执行自动合并