Em primeiro lugar, você não precisa implementar esse rei da lógica sozinho. O Doctrine rastreia inserções de entidades, atualizações, alterações de campos e exclusões internamente e cria eventos correspondentes que você pode ouvir. Por exemplo, quando você cria um novo
Info
entidade e persistir, o Doctrine despachará prePersist
evento quando você chama flush
Operação. Você pode criar um assinante de evento para se inscrever em tais eventos e fazer sua lógica lá. Para entender completamente os eventos do ciclo de vida do Doctrine, confira a documentação oficial do Doctrine:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html
Criação de assinante de evento descrita na documentação do Symfony:http://symfony.com/doc/current/doctrine/event_listeners_subscribers.html#creating-the-subscriber-class
Além disso, você pode experimentar o pacote de terceiros existente que registrará inserções, atualizações e exclusões de entidades:https://github .com/simplethings/EntityAuditBundle Ele também suporta versionamento.