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 38
__construct(TransactionManager $child)

Create a NestedTransactionManager

Parameters

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

at line 48
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 61
bool transactionEnd($chain = false)

Complete a transaction

Parameters

$chain

Return Value

bool True on success

Exceptions

DatabaseException on failure

at line 82
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 114
int transactionDepth()

Return the depth of the transaction.

Return Value

int

at line 119
transactionSavepoint(string $savepoint)

Create a new savepoint

Parameters

string $savepoint The savepoint name

Exceptions

DatabaseException on failure

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