我正在开发一个Symfony项目(API),它使用JSMSerializer,因此发送的每个数据负载都是json格式。
接下来,我有两个实体,比如User和Devices。我为每个实体构建了两种表单类型,在这两者之间的关系是OneToMany时,在第一个实体的FormType中,“devices”字段是DeviceType表单的集合。
当添加时,很简单,您只需发布类似于此的内容:
{
"user": {
"name": "John",
"devices": [
{
"os": "Android",
"color": "red"
},
{
"os": "Android",
"color": "blue"
}
]
}
}
一切都运行良好。实体已在数据库中持久化。
在更新时,可以发送相同的负载,在完全相同的顺序下,使用一些修改后的数据,就像这样:
{
"user": {
"name": "John",
"devices": [
{
"os": "Android",
"color": "redish"
},
{
"os": "Android",
"color": "blueish"
}
]
}
}
然后Symfony就能发挥其魔力。
我的问题是在更新时发送设备的顺序改变。这会引起各种问题。
我的问题是如何发送集合中元素的ID,以便Symfony/Doctrine可以映射并知道如何更新?
我想到了这样的方法
{
"user": {
"name": "John",
"devices": {
"2": {
"os": "Android",
"color": "blueish"
},
"1": {
"os": "Android",
"color": "redish"
}
}
}
}
但它无法正常运行。