我有两个实体与许多关系相关联。例如,可以说我的实体是驾驶员和汽车。驾驶员可以有多辆车,而汽车可以有多个驾驶员。
在我的驾驶员实体上:
/**
* @ORMManyToMany(targetEntity="CARS")
* @ORMJoinTable(name="driver_car")
protected $cars;
固定了联接表的名称,因此我必须指定它。
当我保存新驱动程序时,我可以指定多辆车。
它可以正常工作,我将新的驱动程序保存在BDD中,在驱动程序_CAR中,我的行与驾驶员指定的汽车一样多。
问题是,即使它已经存在于汽车中,它也会创建新车。
例如,如果我在DB中有2辆车,请说:
ID |libelle
1 |法拉利
2 |Porsh
现在,我创建了一个名为Foo的新驱动程序,并将他链接到法拉利,我最终有:
ID |libelle
1 |法拉利
2 |Porsh
3 |法拉利
在DB中。
fyi我使用symfony2表单保存或更新实体。
我试图使用不同的"级联"值而无济于事。有人可以向我解释我做错了什么?
谢谢您的时间:)。
我发现我的问题来自哪里。
我正在使用表单来验证我的对象,并且配置不佳。
之前:
->add('CARS', CollectionType::class, array(
'entry_type' => CARSTYPE::class,
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false
))
之后:
->add('CARS', EntityType::class, array(
'class' => 'CARS',
'invalid_message' => 'Cannot find car.',
'multiple' => true,
))