Я борюсь со следующим: в классе сущности у меня есть 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 из-за некоторого бесконечного цикла.
У кого-нибудь есть идеи для меня? Спасибо!