Both Database and Driver instances provide access to transaction management for your queries. You can manage transactions manually or use pre-created Closure based flow.
To start and commit transaction manually use begin
and commit
methods of Database:
$db->begin();
// your queries
$db->commit();
Rollback:
$db->begin();
// your queries
$db->rollback();
You can let Database manage state of your transaction automatically using transaction
method:
$db->transaction(function (Database $db) {
//Queries
});
Transaction will be rolled back in case of any exception.
DBAL will attempt to reconnect to the database in case of connection drop only when no transactions open.