我试图了解 cascade
中的选项 Doctrine 在 Symfony2 .
我希望能够删除子实体(并且不会触发外键约束错误。)
我有 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]: Integrity constraint violation: 1451 Cannot delete or update a parent row:
a foreign key constraint fails (mybundle
.sms
, CONSTRAINTFK_B0A93A77BB333E0D
FOREIGN KEY (reportId
) REFERENCESreport
(id
))
我在哪里使用
cascade
选项以及我应该使用哪个选项( detach
或 remove
)?我可以做很多试验和错误来解决这个问题,但我希望得到专家的解释,所以我不会忽视一些事情。
最佳答案
尝试使用
/**
* @ORM\ManyToOne(targetEntity="Report", inversedBy="responses")
* @ORM\JoinColumn(name="reportId", referencedColumnName="id", onDelete="CASCADE")
*/
protected $report;
然后更新您的架构。它将添加数据库级级联
关于doctrine - 如何在 Symfony2 Doctrine 中使用级联选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13373668/