原则抛出错误:删除实体后,“通过关系找到了一个新实体”

问题描述

假设我有两个具有关联关系的实体,ProjectUser

Project.php

/**
 * @var User
 *
 * @ORM\ManyToOne(targetEntity="User")
 * @ORM\JoinColumn(onDelete="SET NULL")
 */
private $creator;

当我删除User实体时,doctrineUser对象(无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;

Removing entity in doctrine

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...