防止原则2中的实体删除监听器


Prevent entity deletion in doctrine 2 listener

我需要使实体改变状态,除非被删除。对于那些,我为on-flush方法添加了一个监听器。所以,我可以看到所有被删除的实体,但不能阻止它们被删除。有可能吗?

在事件处理程序中引发异常将剪切事务并回滚更改。

public function onFlush(OnFlushEventArgs $eventArgs)
{
    $em = $eventArgs->getEntityManager();
    $uow = $em->getUnitOfWork();
    foreach ($uow->getScheduledCollectionDeletions() AS $col) {
         throw new Exception('avoid delete');
    }
}

只需安装条令扩展https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/softdeleteable.md或者将其作为开发自己的解决方案

的示例