У меня есть форма для создания Reservation, эта форма содержит встраиваемую форму CollectionType для формы с именем ResaWeekType, соответствующей сущности с именем ResaWeek, которая является таблицей соединения следующих сущностей: Resa и Week.
В таблице ResaWeek также есть поле (поэтому у меня нет отношения ManyToMany между резервированием и неделей):
class ResaWeek
{
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="App\Entity\Resa", inversedBy="resaWeeks")
*/
private $resa;
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="App\Entity\Week", inversedBy="resaWeeks")
*/
private $week;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\State", inversedBy="resaWeeks")
*/
private $state;
// {...}
}
Вот схема.
Вот форма ReservationType:
$builder
->add('resaWeeks', CollectionType::class, [
'entry_type' => ResaWeekType::class,
'entry_options' => ['label' => false],
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
])
;
Итак, форма ResaWeekType вызывает EntityType для недели:
$builder
->add('week', EntityType::class, [
'class' => Week::class
])
;
Я добавил javascripts ( на основе документации), чтобы иметь возможность удалить или добавить строку для элемента ResaWeek.
Моя проблема заключается в том, что существует возможность создать дубликат ResaWeek с тем же идентификатором (поскольку для этого вам нужно только добавьте два ResaWeek и выберите одно и то же поле недели в форме). Как я могу избежать этой ситуации?