2012-02-29 14 views
0

我已经成功实现了使用此示例的我的实体的审计跟踪:http://www.doctrine-project.org/blog/doctrine2-versionableDoctrine 2在INSERT上可版本化

一切工作正常,即使有关系。

问题:

如果记录不存在于数据库中,教条2执行INSERT(如预期),但它也写了审计跟踪但RESOURCEID = 0,因为它不(新)实体的ID在刷新之前不知道。

在这种情况下,我总是失去对记录的第一次审核,实际上从来不知道创建记录的人/时间。

我认为这个问题是在这里:

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

    foreach ($uow->getScheduledEntityInsertions() AS $entity) { 
     if ($entity instanceof Versionable) { 
      $this->_makeSnapshot($entity); 
     } 
    } 

    foreach ($uow->getScheduledEntityUpdates() AS $entity) { 
     if ($entity instanceof Versionable) { 
      $this->_makeSnapshot($entity); 
     } 
    } 
} 

回答