如何解决原则抛出错误:删除实体后,“通过关系找到了一个新实体”
假设我有两个具有关联关系的实体,Project
和User
。
Project.php
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumn(onDelete="SET NULL")
*/
private $creator;
当我删除User
实体时,doctrine
将User
对象(无ID)留在Project
实体中。在正常情况下,这很好,但是我正在使用DomainEvents。在这种情况下,删除用户实体后,DomainEvent触发在数据库中保存一些数据,而辅助保存数据(在删除之后)引发此错误。之所以会发生这种情况,是因为现在在Project
实体中,我们已经脱离了EM
的{{1}}对象,没有ID。
我想到了一个侦听器,该侦听器将在删除后删除实体中的空对象,但我不确定这是一个不错的选择
解决此错误的最佳方法是什么?
解决方法
onDelete
选项不适用于级联删除。
如果您想这样做,我认为您必须在ManyToOne中添加cascade={"remove"}
选项。
尝试以下方法:
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User",cascade={"remove"})
* @ORM\JoinColumn(onDelete="SET NULL")
*/
private $creator;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。