في حال كان هناك اكثر من متطلب يجب تنفيذ من المستخدم لكي تتم العملية أو حصل امر ما في السيرفر،
فهناك طرق مفيده يجب استخدامها منها try & catch
مثال : نموذج تسجيل مستخدم لدفع قيمة اشتراك، هنا في حال تعثر الدفع فإن المستخدم لا يحفظ في قاعدة البيانات ويتم التراجع وارجاع رسالة خطأ يتم تخصيصها.
public function subscribe(array $data)
{
DB::beginTransaction();
try {
$requestData = request()->all();
$requestData['password'] = Hash::make($data['password']);
$user = User::create($requestData);
$paymentMethod = $requestData['payment_method'] ?? NULL;
$user->newSubscription('default', 'plan_xxx')->create($paymentMethod);
DB::commit();
} catch (\Exception $ex) {
DB::rollBack();
throw $ex;
}
}
نستخدم try & catch
مهم استخدام DB beginTransaction في بداية الكود قبل try
وفي نهاية الكود داخل بلوك try نستخدم DB commit
اما في حال حصل خطأ نستخدم DB rollback وهذا السطر يلغي العملية السابقة بالكامل بسبب عدم اكتمال المتطلبات .