TGViewer
| کانال توسعه‌دهندگان لاراول | | کانال توسعه‌دهندگان لاراول | @developixlaravel · 1.54K subscribers
Post #41 1.37K
بررسی DB::transaction

تصور کنید که می‌خواهید چندین عملیات روی دیتابیس انجام دهید، مثلاً در یک فروشگاه آنلاین: ذخیره‌سازی سفارش جدید و کاهش موجودی محصولات در انبار. اگر هر یک از این عملیات جداگانه انجام شود و در یک مرحله‌ی بعدی یکی از آن‌ها با موفقیت انجام نشود، دیتابیس به حالت نامناسبی وارد می‌شود؛ به عبارت دیگر، دیتابیس در وضعیت معتبر قرار نمی گیرد.

از DB::transaction در Laravel می‌توان استفاده کرد تا اینگونه موارد را کنترل کند. این متد اطمینان حاصل می‌کند که تمامی عملیات در یک تراکنش انجام می‌شوند و در صورت بروز هرگونه خطا، تراکنش به حالت اولیه باز می‌گردد و هیچ تغییری در دیتابیس اعمال نمی‌شود.

⚙️ چگونگی استفاده از DB::transaction:

1️⃣ تعریف تراکنش
2️⃣ اجرای عملیات
3️⃣ تایید تراکنش
4️⃣ بازگشت در صورت خطا

📝 مثال: فرض کنید می‌خواهید یک فرآیند ثبت سفارش را پیاده‌سازی کنید. این فرآیند شامل ذخیره‌سازی سفارش در جدول سفارش‌ها و کاهش موجودی محصولات موجود در سبد خرید است.

DB::transaction(function () use ($order, $cart) {
try {
// 1️⃣ تعریف تراکنش

// اجرای عملیات
$order->save(); // ذخیره سفارش

foreach ($cart->items as $item) {
$product = Product::find($item['product_id']);
$product->stock -= $item['quantity'];
$product->save(); // کاهش موجودی محصول
}

// 3️⃣ تایید تراکنش
DB::commit();
} catch (\Exception $e) {
// 4️⃣ بازگشت در صورت خطا
DB::rollBack();
// مدیریت خطا، پیام به کاربر یا انجام دیگر عملیات‌های مورد نیاز
Log::error('Error occurred during transaction: ' . $e->getMessage());
// پرتاب خطا مجدد به عنوان نیازمند پیاده‌سازی
throw $e;
}
});


❕ نکات کلیدی:
- استفاده از DB::transaction به کنترل تراکنش‌های پایگاه داده کمک می‌کند و اطمینان حاصل می‌شود که همه چیز یا هیچ چیز انجام می‌شود.
- در صورت بروز خطا، تراکنش به حالت اولیه باز می‌گردد و تغییرات قبلی لغو می‌شوند.

👤 Maryam

💎 Channel: @DevelopixLaravel
  • 👍 14
More from @developixlaravel
  1. Oct 1, 2026روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت اول در لاراول، روابط…
  2. Sep 30, 2026مدیریت همزمانی و قفل‌گذاری روی پردازش‌ها در لاراول (Laravel Atomic Locks) در بخش چهارم از…
  3. Sep 26, 2026🔥 پکیج: ورود با حساب‌های دیگر؛ Socialite برای اضافه‌کردن ورود با حساب‌های دیگر به پروژه ل…
  4. Sep 25, 2026🔒 فقط داده‌های تأییدشده را ذخیره کن وقتی یک فرم ویرایش پروفایل داری، ممکن است کلاینت علاو…
  5. Sep 20, 2026حفاظت از پردازش ها با Laravel Rate Limiter بخش سوم - پیکربندی در قسمت سوم از مجموعه آموزش…
  6. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
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 →