【发布时间】:2012-11-14 05:48:35
【问题描述】:
我正在尝试理解 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)?
我可以做很多试验和错误来解决这个问题,但我希望得到专家的解释,所以我不会忽略一些事情。
【问题讨论】: