多对多关系重复进入

时间:2017-03-01 16:14:05

标签: php doctrine-orm

我有两个由多对多关系链接的实体。举个例子,假设我的实体是DRIVER和CAR。一个DRIVER可以有多辆车,一辆CAR可以有多个驱动器。

在我的DRIVER实体上我有:

/**
* @ORM\ManyToMany(targetEntity="CARS")
* @ORM\JoinTable(name="driver_car")
protected $cars;

连接表的名称是固定的,所以我必须指定它。

当我保存新的驱动程序时,我可以指定多个车辆。

它工作正常,我的新驱动程序保存在BDD中,我在DRIVER_CAR中有尽可能多的行,因为我已经为我的驱动程序指定了汽车。

问题在于它创造了新车,即使它已经存在于CAR中。

例如,如果我在DB中有2辆车,请说:

id | libelle

1 |法拉利

2 | Porsh

现在我创建了一个名为FOO的新驱动程序并将他链接到法拉利,我最终得到了:

id | libelle

1 |法拉利

2 | Porsh

3 |法拉利

在DB中

仅供参考我使用Symfony2表单来保存或更新实体。

我试图使用不同的"级联"价值无济于事。 有人可以向我解释一下我做错了吗?

感谢您的时间:)。

1 个答案:

答案 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,
    ))