doctrine - 如何在 Symfony2 Doctrine 中使用级联选项?

标签 doctrine cascade

我试图了解 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, CONSTRAINT FK_B0A93A77BB333E0D FOREIGN KEY (reportId) REFERENCES report (id))



我在哪里使用 cascade选项以及我应该使用哪个选项( detachremove )?

我可以做很多试验和错误来解决这个问题,但我希望得到专家的解释,所以我不会忽视一些事情。

最佳答案

尝试使用

/**
 * @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/

相关文章:

php - 更新 Doctrine 中的总关系计数器

php - 将 MySQL 查询转换为 Symfony Doctrine

java - JPA+ Hibernate 中的级联

mysql - 在一个查询中从两个表中删除行

java - 1 :M relationship in Hibernate and cascading operations

python - Django:合并对象

php - 在 Doctrine 中,如何忽略更新模式命令中的特定列?

php - Doctrine - 字段中的逗号分隔值

php - Symfony2 , 提高查询性能

hibernate - 在 ManyToOne 关系中使用 Cascade