Доктрина 2.1 Сохранение сущности в preUpdate lifeCycleCallback

Я борюсь со следующим: в классе сущности у меня есть preUpdate lifeCycleCallback, который должен сохранять новую сущность, прежде чем она сбрасывает изменения для auditTrail.

В preRemove и prePersist это работает отлично, но в preUpdate ничего не происходит. Если я сам вызываю flush, он переходит в рекурсивный цикл.

Согласно группам Google, для пользователя-доктрины включение его в onFlush должно быть вариантом, но в этом случае я не могу получить доступ к старым значениям объекта, чтобы сохранить эти старые значения в новом другом объекте для аудита.

Небольшой пример, который я пытаюсь заархивировать:

getEntityManager();

        $entity = new AuditTrail();
        $entity->action = 'update';
        $entity->someField = $this->someField;

        $em->persist($entity); //this just doesn't do anything :-(
    }
}
?>

Это не настоящий код, просто чтобы проиллюстрировать вам то, что я хочу. Я также пробовал что-то вроде этого:

$em->getUnitOfWork()->computeChangeSet($em->getClassMetaData(get_class($entity)), $entity);

Что должно работать в соответствии с этой темой: http://groups.google.com/group/doctrine-user/browse_thread/thread/bd9195f04857dcd4

Если я вызываю флеш снова, но это приводит к сбою Apache из-за некоторого бесконечного цикла.

У кого-нибудь есть идеи для меня? Спасибо!

8
задан Kees Schepers 25 October 2011 в 10:07
поделиться