Create entity on entity flush Create entity on entity flush symfony symfony

Create entity on entity flush


You can use an event subscriber for that, and attach it to the ORM event listener (in symfony 2, there's docs about that):

namespace YourApp\Subscriber;use Doctrine\Common\EventSubscriber;use Doctrine\ORM\Event\OnFlushEventArgs;use Doctrine\ORM\Events;use YourApp\Entity\Issue;use YourApp\Entity\IssueLog;class IssueUpdateSubscriber implements EventSubscriber{    public function onFlush(OnFlushEventArgs $args)    {        $em  = $args->getEntityManager();        $uow = $em->getUnitOfWork();        foreach ($uow->getScheduledEntityUpdates() as $updated) {            if ($updated instanceof Issue) {                $em->persist(new IssueLog($updated));            }        }        $uow->computeChangeSets();    }    public function getSubscribedEvents()    {        return array(Events::onFlush);    }}

You can eventually check the changeset as I've explained at Is there a built-in way to get all of the changed/updated fields in a Doctrine 2 entity.

I left the implementation of IssueLog out of the example, since that is up to your own requirements.