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 and should be used with caution.