Laravel Database Transactions
Database Transactions
You may use the
transaction
method provided by the DB
facade to run a set of operations within a database transaction. If an exception is thrown within the transaction closure, the transaction will automatically be rolled back and the exception is re-thrown. If the closure executes successfully, the transaction will automatically be committed. You don't need to worry about manually rolling back or committing while using the transaction
method:use Illuminate\Support\Facades\DB;
DB::transaction(function () {
DB::update('update users set votes = 1');
DB::delete('delete from posts');
});
Handling Deadlocks
The
transaction
method accepts an optional second argument which defines the number of times a transaction should be retried when a deadlock occurs. Once these attempts have been exhausted, an exception will be thrown:use Illuminate\Support\Facades\DB;
DB::transaction(function () {
DB::update('update users set votes = 1');
DB::delete('delete from posts');
}, 5);
Manually Using Transactions
If you would like to begin a transaction manually and have complete control over rollbacks and commits, you may use the
beginTransaction
method provided by the DB
facade:use Illuminate\Support\Facades\DB;
DB::beginTransaction();
You can rollback the transaction via the
rollBack
method:DB::rollback();
Lastly, you can commit a transaction via the
commit
method:DB::commit();
Comments
Post a Comment