/**
  * {@inheritdoc}
  */
 public function append($id, DomainEventStreamInterface $eventStream)
 {
     $this->connection->beginTransaction();
     try {
         foreach ($eventStream as $event) {
             $this->appendEvent($event);
         }
         $this->connection->commit();
     } catch (\Exception $e) {
         $this->connection->rollBack();
         IlluminateEventStoreException::failedToAppend($e);
     }
 }
 /**
  * Appends the message stream to the event store.
  *
  * @param mixed $identifier                  The aggregate identifier.
  * @param DomainEventStreamInterface $stream The stream of domain messages.
  * @throws LaravelStoreException             When something went wrong
  *                                           during persistence.
  * @return void
  */
 public function append($identifier, DomainEventStreamInterface $stream)
 {
     // No-op to ensure that an error will be thrown early if the ID
     // is not something that can be converted to a string.
     (string) $identifier;
     try {
         $this->connection->beginTransaction();
         // Make the domain messages database friendly..
         $records = $this->streamSerializer->serialize($stream);
         // Now its time to persist them..
         foreach ($records as $record) {
             $this->connection->table($this->tableName)->insert($record);
         }
         $this->connection->commit();
     } catch (\Exception $exception) {
         // Oops, something went wrong
         $this->connection->rollBack();
         $message = 'Error while persisting the domain events';
         throw new LaravelStoreException($message, $exception);
     }
 }