假设我有两个实体,Project
和User
有关系。
项目.php
/**
* @var User
*
* @ORMManyToOne(targetEntity="User")
* @ORMJoinColumn(onDelete="SET NULL")
*/
private $creator;
当我删除User
实体时,doctrine
会将User
对象(没有ID(留在Project
实体中。在正常情况下,这很好,但我使用的是DomainEvents。在这种情况下,删除User实体后,DomainEvent会触发在DB中保存一些数据,而二次保存数据(删除后(会引发此错误。之所以会发生这种情况,是因为现在在Project
实体中,我们有一个没有ID的(从EM
(User
对象。
我想到了一个监听器,它会在删除后删除实体中的空对象,但我不确定这是一个好的变体
解决此错误的最佳变体是什么?
onDelete
选项不应用级联移除。如果你想这样做,我认为你应该将cascade={"remove"}
选项添加到ManyToOne中。
尝试如下:
/**
* @var User
*
* @ORMManyToOne(targetEntity="User", cascade={"remove"})
* @ORMJoinColumn(onDelete="SET NULL")
*/
private $creator;
删除条令中的实体