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