【发布时间】:2016-03-28 21:21:08
【问题描述】:
我已经设置了一个学说 EntityListener。我需要在postRemove 事件中执行一些代码,这些代码必须在任何原则事务之外。然而:
public function postRemove(Image $image, LifecycleEventArgs $event)
{
$isActive = $event->getEntityManager()->getConnection()->isTransactionActive();
dump($isActive);
}
总是转储 true。
无论我是在 postRemove() 方法中提交还是刷新;我尝试在 preRemove() 中启动事务并在 postRemove() 中提交它,但这没有帮助。
问题:有没有办法阻止 Doctrine 将 postRemove() 包装到事务中?如果不是,对我来说执行超出事务的代码的最佳方式是什么?我不在乎它是立即发生还是在内核终止时发生,只要它最终发生。
我有个想法,在 EntityListener 中创建一个析构方法,并在 Listener 析构时运行代码,但我不知道这有多可靠。也许还有其他(更好的)选择?
谢谢!
【问题讨论】:
标签: transactions doctrine symfony