Sets the transaction isolation level.
public setTransactionIsolation ( integer $level ) : integer | ||
$level | integer | The level to set. |
Résultat | integer |
/** * {@inheritdoc} */ public function register(EventDispatcher $dispatcher) { $dispatcher->addListener(RouteMatchedEvent::class, function (RouteMatchedEvent $event) { $annotation = $this->getTransactionalAnnotation($event->getRouteMatch()); if ($annotation) { $this->connection->setTransactionIsolation($annotation->getIsolationLevel()); $this->connection->beginTransaction(); } }); $dispatcher->addListener(ControllerInvocatedEvent::class, function (ControllerInvocatedEvent $event) { $annotation = $this->getTransactionalAnnotation($event->getRouteMatch()); if ($annotation) { if ($this->connection->isTransactionActive()) { $this->connection->rollback(); } } }); }
/** * Initializes a new instance of the Connection class. * * @param array $params The connection parameters. * @param \Doctrine\DBAL\Driver $driver * @param \Doctrine\DBAL\Configuration $config * @param \Doctrine\Common\EventManager $eventManager * @throws \Exception */ public function __construct(array $params, Driver $driver, Configuration $config = null, EventManager $eventManager = null) { if (!isset($params['adapter'])) { throw new \Exception('adapter not set'); } if (!isset($params['tablePrefix'])) { throw new \Exception('tablePrefix not set'); } parent::__construct($params, $driver, $config, $eventManager); $this->adapter = new $params['adapter']($this); $this->tablePrefix = $params['tablePrefix']; parent::setTransactionIsolation(parent::TRANSACTION_READ_COMMITTED); }