class NestedTransactionManager implements TransactionManager (View source)

TransactionManager decorator that adds virtual nesting support.

Because this is managed in PHP and not the database, it has the following limitations:

  • Committing a nested transaction won't change anything until the parent transaction is committed
  • Rolling back a nested transaction means that the parent transaction must be rolled backed

DBAL describes this behaviour nicely in their docs: https://www.doctrine-project.org/projects/doctrine-dbal/en/2.8/reference/transactions.html#transaction-nesting

Methods

__construct(TransactionManager $child)

Create a NestedTransactionManager

bool
transactionStart(string|bool $transactionMode = false, string|bool $sessionCharacteristics = false)

Start a transaction

bool
transactionEnd($chain = false)

Complete a transaction

bool
transactionRollback(string $savepoint = null)

Roll-back a transaction

int
transactionDepth()

Return the depth of the transaction.

transactionSavepoint(string $savepoint)

Create a new savepoint

bool
supportsSavepoints()

Return true if savepoints are supported by this transaction manager.

Details

__construct(TransactionManager $child)

Create a NestedTransactionManager

Parameters

TransactionManager $child

The transaction manager that will handle the topmost transaction

bool transactionStart(string|bool $transactionMode = false, string|bool $sessionCharacteristics = false)

Start a transaction

Parameters

string|bool $transactionMode

Transaction mode, or false to ignore. Deprecated and will be removed in SS5.

string|bool $sessionCharacteristics

Session characteristics, or false to ignore. Deprecated and will be removed in SS5.

Return Value

bool

True on success

Exceptions

DatabaseException

on failure

bool transactionEnd($chain = false)

Complete a transaction

Parameters

$chain

Return Value

bool

True on success

Exceptions

DatabaseException

on failure

bool transactionRollback(string $savepoint = null)

Roll-back a transaction

Parameters

string $savepoint

If set, roll-back to the named savepoint

Return Value

bool

True on success

Exceptions

DatabaseException

on failure

int transactionDepth()

Return the depth of the transaction.

Return Value

int

transactionSavepoint(string $savepoint)

Create a new savepoint

Parameters

string $savepoint

The savepoint name

Exceptions

DatabaseException

on failure

bool supportsSavepoints()

Return true if savepoints are supported by this transaction manager.

Savepoints aren't supported by all database connectors (notably PDO doesn't support them) and should be used with caution.

Return Value

bool