Amir Alsaeed نشر 22 مارس 2021 أرسل تقرير نشر 22 مارس 2021 لقد قرأت ضرورة استخدام DB::transaction عند وجود أكثر من عملية إدخال إلى قاعدة البيانات. ولكن في هذه الحالة هل يجب أن أضع try و catch بداخلها؟ أم العكس أي أقوم بوضع transaction وعمليات الإدخال بداخل try ؟ مثل التالي: try { DB::transaction(function() { ...... }); if(is_null($exception)) { return true; } else { throw new Exception; } } catch(Exception $e) { return false; } أيهما أفضل ويتم استخدامه في هذه الحالة؟ اقتباس
0 Waleed Alfakiat نشر 22 مارس 2021 أرسل تقرير نشر 22 مارس 2021 الأفضل استخدام DB::transaction خارج try & catch وجعل الأوامر DB::insert DB::commit بداخل try والأمر DB::rollback في catch ليصبح البرنامج كالآتي: DB::beginTransaction(); try { DB::insert(...); DB::insert(...); DB::insert(...); DB::commit(); // كل شيء يعمل على ما يرام } catch (\Exception $e) { DB::rollback(); // هنالك خطأ ما أثناء التنفيذ } وبهذه الإجراءات, نتفادى أي خطأ قد يحدث في قاعدة البيانات سببه المستخدم اقتباس
0 بلال زيادة نشر 22 مارس 2021 أرسل تقرير نشر 22 مارس 2021 إذا كنت تستخدم PHP7 ، فاستخدم Throwable in catch لالتقاط استثناءات المستخدم والأخطاء الفادحة. DB::beginTransaction(); try { DB::insert(...); DB::commit(); } catch (\Throwable $e) { DB::rollback(); throw $e; } إذا كان يجب أن يكون الرمز الخاص بك متوافقًا مع PHP5 ، فاستخدم Exception و Throwable: DB::beginTransaction(); try { DB::insert(...); DB::commit(); } catch (\Exception $e) { DB::rollback(); throw $e; } catch (\Throwable $e) { DB::rollback(); throw $e; } اقتباس
السؤال
Amir Alsaeed
لقد قرأت ضرورة استخدام DB::transaction عند وجود أكثر من عملية إدخال إلى قاعدة البيانات. ولكن في هذه الحالة هل يجب أن أضع try و catch بداخلها؟ أم العكس أي أقوم بوضع transaction وعمليات الإدخال بداخل try ؟ مثل التالي:
try { DB::transaction(function() { ...... }); if(is_null($exception)) { return true; } else { throw new Exception; } } catch(Exception $e) { return false; }
أيهما أفضل ويتم استخدامه في هذه الحالة؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.