Bạn có thể sử dụng phương thức transaction của DB facade để chạy tập hợp các câu lệnh trong một database transaction. Nếu một exception xảy ra trong transaction Closure, transaction sẽ tự động được rolled back. Nếu Closure thực thi thành công, transaction sẽ tự động được committed. Bạn không cần lo lắng về việc phải thực hiện rolling back thủ công trong khi sử dụng phương thức transaction:

DB::transaction(function () {
    DB::table('users')->update(['votes' => 1]);

    DB::table('posts')->delete();
});

Handling Deadlocks

Phương thức transaction cho phép một tham số thứ 2 để định nghĩa số lần mà transaction sẽ được reattempted khi mà deadlock xảy ra. Khi có hiện tượng deadlock, một exception sẽ được đưa ra

DB::transaction(function () {
    DB::table('users')->update(['votes' => 1]);

    DB::table('posts')->delete();
}, 5);

Manually Using Transactions

Nếu bạn muốn quản lý transaction thủ công, bạn có thể sử dụng phương thức beginTransaction trong DB facade:

DB::beginTransaction();

Bạn có thể rollBack transaction qua phương thức rollBack:

DB::rollBack();

Cuối cùng bạn có thể commit qua phương thức commit:

DB::commit();

 Phương thức DB facade sẽ quản lý transactions cho cả 2 phương pháp là query builder và Eloquent ORM.