NestedTransactionManager
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
Properties
protected | int | $transactionNesting | ||
protected | TransactionManager | $child | ||
protected | bool | $mustRollback | Set to true if all transactions must roll back to the parent |
Methods
Start a transaction
Return true if savepoints are supported by this transaction manager.
Details
__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.
Savepoints aren't supported by all database connectors (notably PDO doesn't support them) and should be used with caution.