この例を使用して、エンティティの監査証跡を正常に実装しました:http://www.doctrine-project.org/blog/doctrine2-versionable。Doctrine 2 Versionable on INSERT
すべてがうまく動作します。
問題:
レコードがデータベースに存在しない場合には、教義2が(予想通り)INSERTを行っている、それはまた、監査証跡を書き込むんがRESOURCEID = 0でそれはdoesnのためそれがフラッシュされる前に(新しい)エンティティの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);
}
}
}
感謝。それは正しい方向に私を指摘した。 –