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.