SyntaxStudy
Sign Up
MySQL Transactions in Laravel
MySQL Beginner 4 min read

Transactions in Laravel

Laravel Transactions

Laravel's DB::transaction() handles begin/commit/rollback automatically and retries on deadlock.

Example
use Illuminate\Support\Facades\DB;

// Auto transaction
$order = DB::transaction(function () use ($cart) {
    $order = Order::create(["user_id" => auth()->id(), "total" => $cart->total()]);
    foreach ($cart->items as $item) {
        $order->items()->create($item);
        Product::where("id", $item->product_id)->decrement("stock", $item->qty);
    }
    return $order;
}, attempts: 3); // retry up to 3 times on deadlock

// Manual transaction
DB::beginTransaction();
try { ...; DB::commit(); } catch (\Exception $e) { DB::rollBack(); throw $e; }
Pro Tip

DB::transaction() with attempts handles deadlock retries automatically — prefer it over manual begin/commit.