Я борюсь со следующим, в классе сущностей у меня есть preUpdate lifeCycleCallback, который должен сохранять новую сущность, прежде чем сбрасывает изменения для auditTrail.
В preRemove и prePersist это работает отлично, но в preUpdate ничего не происходит. Если я сам вызываю flush, он идет по рекурсивному циклу.
По мнению групп Google для пользователей-доктринов, включение этого параметра в onFlush должно быть вариантом, но в этом случае я не могу получить доступ к старым значениям сущности, чтобы сохранить эти старые значения в новой другой сущности для контрольного журнала.
Небольшой пример того, что я пытаюсь архивировать:
<?php
/**
* @Entity
* @HasLifeCycleCallbacks
*/
class someEntity {
... annotations ...
/**
* @PreUpdate
*/
public function addAuditTrail() {
$em = \Zend_Registry::get('doctrine')->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 из-за некоторого бесконечного цикла.
Кто-нибудь, кто получил идеи для меня? Спасибо!