Doctrine onDelete外键约束

时间:2017-12-08 11:38:15

标签: symfony doctrine associations

快速草图
我想删除父实体而不删除它的子节点,而是将引用的列设置为NULL

我的编程
我将onDelete="SET NULL"添加到我的子实体的joinColumn中,如下所示:

/**
 * @ORM\ManyToOne(targetEntity="Backend\Modules\Ads\Domain\Ad\Ad", inversedBy="rewarded")
 * @ORM\JoinColumn(name="ad_id", referencedColumnName="id", onDelete="SET NULL")
 */
private $ad;

这是父实体关联:

/**
 * @ORM\OneToMany(targetEntity="Backend\Modules\Ads\Domain\Rewarded\Rewarded", mappedBy="ad")
 */
private $rewarded;

问题
在删除父项时,它会抛出此错误:

Cannot delete or update a parent row: a foreign key constraint fails

我已经尝试添加"remove", "persist"但没有取得多大成功。使用persist仍会导致错误,如果启用了remove,它将只删除该行。

到目前为止,我找不到任何可行的解决方案了,谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我想要设置NULL的实体依赖于另一个实体,这取决于我也删除的实体。上面使用的方法在需要时随处可用时完全正常工作。

感谢。