public function revertAudit(AuditEntry $audit) { $entity = $this->em->getRepository($audit->getResourceName())->find($audit->getResourceId()); $getter = 'get' . ucfirst($audit->getFieldName()); $setter = 'set' . ucfirst($audit->getFieldName()); $entityValue = $entity->{$getter}(); if (!is_object($entityValue)) { if ($audit->getNewValue() == $entityValue) { $entity->{$setter}($audit->getOldValue()); } else { throw EntityInWrongStateException; } } elseif (!$entityValue instanceof Collection) { $oldValue = $this->getEntityRepository($entityValue)->find($audit->getOldValue()); $newValue = $this->getEntityRepository($entityValue)->find($audit->getNewValue()); if ($newValue === $entityValue) { $entity->{$setter}($oldValue); } else { throw EntityInWrongStateException; } } else { } }