src/TransactionalInterceptor.php
public function invoke(MethodInvocation $invocation)
    {
        /** @var ReflectionMethod $method */
        $method = $invocation->getMethod();
        /** @var Transactional $transactional */
        $transactional = $method->getAnnotation(Transactional::class);
        if (\count($transactional->value) > 1) {
            return (new PropTransaction)($invocation, $transactional);
        }
        if (! $this->pdo instanceof ExtendedPdoInterface) {
            return $invocation->proceed();
        }
        try {
            $this->pdo->beginTransaction();
            $result = $invocation->proceed();
            $this->pdo->commit();
        } catch (\PDOException $e) {
            $this->pdo->rollBack();
            throw new RollbackException($e->getMessage(), 0, $e);
        }

        return $result;
    }
public function invoke(MethodInvocation $invocation)
    {
        /** @var ReflectionMethod $method */
        $method = $invocation->getMethod();
        /** @var Transactional $transactional */
        $transactional = $method->getAnnotation(Transactional::class);
        if (\count($transactional->value) > 1) {
            return (new PropTransaction)($invocation, $transactional);
        }
        if (! $this->pdo instanceof ExtendedPdoInterface) {
            return $invocation->proceed();
        }
        try {
            $this->pdo->beginTransaction();
            $result = $invocation->proceed();
            $this->pdo->commit();
        } catch (\PDOException $e) {
            $this->pdo->rollBack();
            throw new RollbackException($e->getMessage(), 0, $e);
        }

        return $result;
    }
{@inheritdoc}