استخدام المعاملات بشكل صحيح
استخدام Webman للمعاملات في قاعدة البيانات مشابه لاستخدام الأطر الأخرى، هنا نذكر بعض النقاط التي يجب الانتباه إليها
هيكلية الكود
هيكلية الكود مشابهة للأطر الأخرى، مثل الاستخدام في Laravel (مشابه لـ think-orm)
Db::beginTransaction();
try {
// ..معالجة الأعمال مختصرة...
Db::commit();
} catch (\Throwable $exception) {
Db::rollBack();
}
من المهم ملاحظة أنه يجب استخدام \Throwable
و لا يمكن استخدام \Exception
، لأن معالجة الأعمال قد تؤدي إلى حدوث Error
، والتي لا تنتمي إلى Exception
اتصال قاعدة البيانات
عند العمل على نموذج داخل المعاملة، من المهم الانتباه ما إذا كان النموذج قد تم تحديده للاتصال. إذا تم تحديد الاتصال للنموذج، يجب تحديد الاتصال عند بدء المعاملة، وإلا ستكون المعاملة غير صالحة (مشابه لـ think-orm). على سبيل المثال
<?php
namespace app\model;
use support\Model;
class User extends Model
{
// هنا تم تحديد الاتصال للنموذج
protected $connection = 'mysql';
protected $table = 'users';
protected $primaryKey = 'id';
}
عندما يتم تحديد الاتصال للنموذج، يجب تحديد الاتصال عند بدء المعاملة، وإكمالها، والتراجع عنها
Db::connection('mysql')->beginTransaction();
try {
// معالجة الأعمال
$user = new User;
$user->name = 'webman';
$user->save();
Db::connection('mysql')->commit();
} catch (\Throwable $exception) {
Db::connection('mysql')->rollBack();
}
البحث عن الطلبات ذات المعاملات غير الملتزمة
في بعض الأحيان، تؤدي أخطاء الكود في الأعمال إلى عدم التزام المعاملة لطلب ما. لتحديد أي دالة تحكم لم تلتزم بالمعاملة بسرعة، يمكنك تثبيت مكون webman/log
، حيث سيقوم هذا المكون بعد انتهاء الطلب بالتحقق تلقائيًا مما إذا كانت هناك معاملات غير ملتزمة وتسجيلها في السجلات، والكلمة الرئيسية في السجل هي Uncommitted transactions
طريقة تثبيت webman/log
composer require webman/log
ملحوظة
بعد التثبيت، يجب إعادة التشغيل، التشغيل مجددًا لا ينطبق