1

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

4

2 回答 2

6

在事件处理程序中抛出异常会切断事务并回滚更改。

public function onFlush(OnFlushEventArgs $eventArgs)
{
    $em = $eventArgs->getEntityManager();
    $uow = $em->getUnitOfWork();

    foreach ($uow->getScheduledCollectionDeletions() AS $col) {
         throw new Exception('avoid delete');
    }
}
于 2012-09-11T06:35:48.563 回答
1

只需安装学说扩展https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/softdeleteable.md或以它为示例来开发您自己的解决方案

于 2012-09-11T06:30:51.623 回答