/** * {@inheritdoc} */ public function persist(ConnectionInterface $connection, Container $container) { $entities = $container->state(Container::STATE_NEW); if ($entities->size() === 0) { return; } $entities->foreach(function (IdentityInterface $identity, $entity) { $this->dispatcher->dispatch(Events::PRE_PERSIST, new PersistEvent($identity, $entity)); }); $connection->execute($this->queryFor($entities)); $entities->foreach(function (IdentityInterface $identity, $entity) use($container) { $container->push($identity, $entity, Container::STATE_MANAGED); $this->changeset->use($identity, $this->extractor->extract($entity)); $this->dispatcher->dispatch(Events::POST_PERSIST, new PersistEvent($identity, $entity)); }); }
/** * {@inheritdoc} */ public function persist(ConnectionInterface $connection, Container $container) { $entities = $container->state(Container::STATE_TO_BE_REMOVED)->foreach(function (IdentityInterface $identity, $object) { $this->dispatcher->dispatch(Events::PRE_REMOVE, new RemoveEvent($identity, $object)); }); if ($entities->size() === 0) { return; } $connection->execute($this->queryFor($entities)); $entities->foreach(function (IdentityInterface $identity, $object) use($container) { $container->push($identity, $object, Container::STATE_REMOVED); $this->changeset->use($identity, new Collection([])); //in case the identity is reused later on $this->dispatcher->dispatch(Events::POST_REMOVE, new RemoveEvent($identity, $object)); }); }
/** * Call the push method of the Alert Container object, which will get the * messages in array format (raw), and persist them using the Alert Handler * implementation. * * @param $request * @param $response */ public function terminate($request, $response) { $this->alert->push(); }