在我的代码中触发 Doctrine 生命周期事件

Fra*_*eni 4 symfony doctrine-orm

问题:如何触发在我的代码中Doctrine 生命周期事件,使实体数据可用?

细节

  • 我对学说postPersistpostUpdate事件有一个积极的倾听者。
  • 我无法修改/覆盖此侦听器。
  • 在我的代码中的某些地方,出于性能原因,我使用 DBAL 而不是 ORM 方法来保存数据。
  • 我想坚持相同的事件系统。

预先感谢您的帮助。

Fra*_*eni 5

扩展@Cerad 答案,这是一个非常基本的示例代码来实现结果(触发 Doctrine LifeCycle 事件)。这个示例假设我们在一个Symfony控制器中:

use Doctrine\ORM\Event\LifecycleEventArgs;
// ...
$user = new AppBundle\Entity\User();
// ... do something with the user
$entityManager = $this->getDoctrine()->getManager();
$eventManager = $entityManager->getEventManager();
$eventArgs = new LifecycleEventArgs($user, $entityManager);
$eventManager->dispatchEvent(\Doctrine\ORM\Events::postPersist, $eventArgs);
Run Code Online (Sandbox Code Playgroud)