我正在为 REST API 进行 Symfony 4 表单的嵌入类型工作。这个表单:
class OffertaType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('pulsanti_social_attivi', CheckboxType::class, [ ])
->add('immagini', CollectionType::class, [
'entry_type' => OffertaImmagineType::class,
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'prototype' => 'immagini'
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(
[
'data_class' => Offerta::class,
'allow_extra_fields' => true,
'csrf_protection' => false,
]
);
}
}
这个集合包含2个对象。
[
{
"id": 1,
"url": "https://via.placeholder.com/150?text=1"
},
{
"id": 2,
"url": "https://via.placeholder.com/150?text=2"
}
]
所有“工作”,如果我发布一些数据,将创建一个新对象,如果我更新一个对象,则会更新数据库。奇怪的是,行的更新/删除似乎基于对象在集合中的位置,而不是基于其ID。如果我删除第一个对象,结果应该是
[
{
"id": 2,
"url": "https://via.placeholder.com/150?text=2"
}
]
但是它的
[
{
"id": 1,
"url": "https://via.placeholder.com/150?text=2"
}
]
Symfony只看到了一个对象,因此删除第二个对象并更新第一个对象的"url"字段。
我如何通过对象的ID而不是位置来“索引”集合?