我试图了解Symfony2中Doctrine中的cascade选项。
我希望能够删除一个子实体(而不是触发外键约束错误。)
我有 3 个实体:
报告
/**
* @ORM\OneToMany(targetEntity="Response", mappedBy="report")
*/
protected $responses;
/**
* @ORM\OneToMany(targetEntity="Response", mappedBy="report")
*/
protected $sms;
回复
/**
* @ORM\ManyToOne(targetEntity="Report", inversedBy="responses")
*/
protected $report;
短信
/**
* @ORM\ManyToOne(targetEntity="Report")
*/
protected $report;
现在我想删除一个Response实体,但我得到了
SQLSTATE [23000]:完整性约束违规:1451 无法删除或更新父行:
外键约束失败(mybundle.sms, CONSTRAINTFK_B0A93A77BB333E0DFOREIGN KEY (reportId) REFERENCESreport(id))
我在哪里使用该cascade选项以及我应该使用哪个选项(detach或remove)?
我可以做很多试验和错误来解决这个问题,但我希望得到专家的解释,所以我不会忽略一些事情。