Skip to content
laravelphp

Laravel 12 - Database Transactions with Retry

Safe database transactions with automatic retry on deadlock

<?php

use Illuminate\Support\Facades\DB;

// Simple transaction
DB::transaction(function () {
    DB::table('users')->update(['votes' => 1]);
    DB::table('posts')->delete();
});

// Transaction with manual control
DB::beginTransaction();
try {
    $user = User::create($data);
    $user->profile()->create($profileData);
    DB::commit();
} catch (\Exception $e) {
    DB::rollBack();
    throw $e;
}

// Transaction with automatic retry on deadlock (Laravel 12)
DB::transaction(function () {
    // Your database operations
}, attempts: 5);