我有两个由多对多关系链接的实体。举个例子,假设我的实体是DRIVER和CAR。一个DRIVER可以有多辆车,一辆CAR可以有多个驱动器。
在我的DRIVER实体上我有:
/**
* @ORM\ManyToMany(targetEntity="CARS")
* @ORM\JoinTable(name="driver_car")
protected $cars;
连接表的名称是固定的,所以我必须指定它。
当我保存新的驱动程序时,我可以指定多个车辆。
它工作正常,我的新驱动程序保存在BDD中,我在DRIVER_CAR中有尽可能多的行,因为我已经为我的驱动程序指定了汽车。
问题在于它创造了新车,即使它已经存在于CAR中。
例如,如果我在DB中有2辆车,请说:
现在我创建了一个名为FOO的新驱动程序并将他链接到法拉利,我最终得到了:
。
仅供参考我使用Symfony2表单来保存或更新实体。
我试图使用不同的"级联"价值无济于事。 有人可以向我解释一下我做错了吗?
感谢您的时间:)。
答案 0 :(得分:0)
我发现我的问题来自哪里。
我使用表单验证我的对象,但配置不当。
之前:
->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,
))