我需要使实体改变状态,除非被删除。对于那些,我为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或者将其作为开发自己的解决方案