انتقل إلى محتوى الدرس

Deleting Rows and Atomic Transactions حذف السجلات وتنفيذ المعاملات الذرية

إدراج وتحديث وحذف السجلات وتنفيذ المعاملات الذرية DB::transaction وتعبئة البيانات الأولية عبر فئات Seeders.
1 صفوف تعليمية
إطار العمل Laravel
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

عندما تتطلب العملية تعديل عدة جداول معاً كخصم رصيد المحفظة وتسجيل عملية الدفع، فإن فشل الخطوة الثانية يترك البيانات مشوهة. يضمن تغليف الاستعلامات المترابطة داخل DB::transaction الذرية الكاملة؛ فإما أن تنجح كافة الخطوات وتُعتمد، أو يتم التراجع عنها جميعاً تلقائياً عند حدوث أي خطأ.

  • الحذف المشروط (delete): حذف السجلات المطابقة لشرط التصفية وإرجاع عدد الصفوف المحذوفة.
  • المعاملة الذرية (DB::transaction): فتح معاملة قاعدة بيانات وتنفيذ الكود ثم اعتماد التغييرات COMMIT تلقائياً.
  • التراجع التلقائي (Auto Rollback): إلغاء كافة التغييرات السابقة تلقائياً فور انطلاق أي استثناء داخل الدالة المغلقة.
PHP
DB::transaction(function () {
    DB::table('wallets')->where('user_id', 1)
        ->decrement('balance', 100);
    DB::table('payments')->insert([
        'user_id' => 1, 'amount' => 100,
    ]);
});