class NestedTransactionManager implements TransactionManager

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|boolean $transactionMode = false, string|boolean $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

boolean
supportsSavepoints()

Return true if savepoints are supported by this transaction manager.

Details

at line 37
__construct(TransactionManager $child)

Create a NestedTransactionManager

Parameters

TransactionManager $child The transaction manager that will handle the topmost transaction

at line 47
bool transactionStart(string|boolean $transactionMode = false, string|boolean $sessionCharacteristics = false)

Start a transaction

Parameters

string|boolean $transactionMode Transaction mode, or false to ignore. Deprecated and will be removed in SS5.
string|boolean $sessionCharacteristics Session characteristics, or false to ignore. Deprecated and will be removed in SS5.

Return Value

bool True on success

Exceptions

DatabaseException on failure

at line 60
bool transactionEnd($chain = false)

Complete a transaction

Parameters

$chain

Return Value

bool True on success

Exceptions

DatabaseException on failure

at line 81
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

at line 113
int transactionDepth()

Return the depth of the transaction.

Return Value

int

at line 118
transactionSavepoint(string $savepoint)

Create a new savepoint

Parameters

string $savepoint The savepoint name

Exceptions

DatabaseException on failure

at line 123
boolean 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

boolean