public function onFlush(OnFlushEventArgs $eventArgs) { $this->em = $eventArgs->getEntityManager(); $this->conn = $this->em->getConnection(); $this->uow = $this->em->getUnitOfWork(); $this->platform = $this->conn->getDatabasePlatform(); $this->revisionId = null; // reset revision foreach ($this->uow->getScheduledEntityDeletions() as $entity) { $class = $this->em->getClassMetadata(get_class($entity)); if (!$this->metadataFactory->isAudited($class->name)) { continue; } $entityData = array_merge($this->getOriginalEntityData($entity), $this->uow->getEntityIdentifier($entity)); $this->saveRevisionEntityData($class, $entityData, 'DEL'); } }
public function postGenerateSchemaTable(GenerateSchemaTableEventArgs $eventArgs) { $schema = $eventArgs->getSchema(); $cm = $eventArgs->getClassMetadata(); if ($this->metadataFactory->isAudited($cm->name)) { $schema = $eventArgs->getSchema(); $entityTable = $eventArgs->getClassTable(); $revisionTable = $schema->createTable($this->config->getTablePrefix() . $entityTable->getName() . $this->config->getTableSuffix()); foreach ($entityTable->getColumns() as $column) { /* @var $column Column */ $revisionTable->addColumn($column->getName(), $column->getType()->getName(), array_merge($column->toArray(), array('notnull' => false, 'autoincrement' => false))); } $revisionTable->addColumn($this->config->getRevisionFieldName(), $this->config->getRevisionIdFieldType()); $revisionTable->addColumn($this->config->getRevisionTypeFieldName(), 'string', array('length' => 4)); $pkColumns = $entityTable->getPrimaryKey()->getColumns(); $pkColumns[] = $this->config->getRevisionFieldName(); $revisionTable->setPrimaryKey($pkColumns); } }