TGViewer
CodeVerse | دنیای برنامه نویسان CodeVerse | دنیای برنامه نویسان @codeverse_dev · 1.06K subscribers
Post #292 201
چرا ()DB::transaction فقط برای Rollback نیست؟

🚨 فرض کنید کاربر سفارشی ثبت می‌کند.

در کد شما این اتفاق می‌افتد:

$order = Order::create($data);

$product->decrement('stock');

Payment::create($paymentData);

حالا تصور کنید بعد از ثبت سفارش، هنگام ثبت پرداخت خطایی رخ دهد.

نتیجه؟

❌ سفارش ثبت شده است.

❌ موجودی کالا کم شده است.

❌ اما پرداخت وجود ندارد!

سیستم شما وارد یک وضعیت ناسازگار (Inconsistent State) می‌شود.

راه حرفه‌ای:

DB::transaction(function () {

$order = Order::create($data);

$product->decrement('stock');

Payment::create($paymentData);

});

اگر یکی از عملیات‌ها شکست بخورد:

✅ تمام تغییرات Rollback می‌شوند.

هیچ داده ناقصی داخل دیتابیس باقی نمی‌ماند.

---

🎯 اشتباه رایج

بسیاری از برنامه‌نویسان فکر می‌کنند Transaction فقط برای جلوگیری از خطاست.

در حالی که وظیفه اصلی آن:

حفظ یکپارچگی داده‌ها (Data Integrity) است.

💡 اگر چند عملیات به هم وابسته هستند، احتمالاً باید داخل Transaction اجرا شوند.

@CodeVerse_dev
  • ❤ 4
  • 👍 1
More from @codeverse_dev
  1. Oct 9, 2026📝 گوگل یک اپ یادداشت‌بردار صوتی آفلاین با هوش مصنوعی معرفی کرد! 🔹ابزار AI Edge Foresight…
  2. Oct 7, 2026👨‍💻 برنامه‌نویسی با AI راحت‌تر شده؛ پس چرا بعضی Developerها خسته‌تر شده‌اند؟ طبق نظرسنجی…
  3. Oct 7, 2026🚨 وردپرس 7.1.3 منتشر شد؛ این یکی را عقب نینداز وردپرس دیروز نسخه 7.1.3 را منتشر کرد؛ یک آ…
  4. Oct 6, 2026شرکت Google وارد یک درگیری جدی با ناشران شده ⚖️ رگولاتور رقابت لهستان اعلام کرده Google را…
  5. Oct 6, 2026اگر Windows 11 داری، قبل از نصب بعضی آپدیت‌ها حواست باشد ⚠️ مایکروسافت تأیید کرده آپدیت پی…
  6. Oct 6, 2026اگر Chrome استفاده می‌کنی، این آپدیت را جدی بگیر ⚡ نسخه Stable مرورگر Chrome برای دسکتاپ ب…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →