【问题标题】:How to persist an entity inside an event listener?如何在事件侦听器中持久化实体?
【发布时间】:2011-10-14 17:27:39
【问题描述】:

是否可以在事件侦听器中持久化实体?我正在尝试实现审计跟踪功能:

public function preUpdate($eventArgs)
{
  if ($eventArgs->getEntity() instanceof \Domain\Entity\Customer) {
    $customerAuditTrail = new \Domain\Entity\CustomerAuditTrail();

    if ($eventArgs->hasChangedField('FirstName')) {
      $customerAuditTrail->setAction('Update');
      $customerAuditTrail->setField('FirstName');
      $customerAuditTrail->setCustomer($eventArgs->getEntity());

      $customerAuditTrail->setOldValue($eventArgs->getOldValue('FirstName'));
      $customerAuditTrail->setNewValue($eventArgs->getNewValue('FirstName'));
      ...

      $this->_em->persist($customerAuditTrail);
    }
  }
}

保存操作正常,但 customerAuditTrail 尚未持久化到数据库中。

【问题讨论】:

    标签: doctrine-orm


    【解决方案1】:

    您可以在onFlush事件中插入其他实体,您可以在http://www.doctrine-project.org/blog/doctrine2-versionable中查看示例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多