Header Ads

Header ADS

কেন DB::transaction() use করা হয়।

 

কেন DB::transaction() use করা হয়েছে?

Laravel এর DB::transaction() মূলত atomic operation নিশ্চিত করার জন্য use করা হয়।
মানে, এই কোড ব্লকে যা যা কাজ হচ্ছে (যেমন:
✅ sale create,
✅ সেই sale এর সাথে items create করা) —

যদি এর মধ্যে কোনো একটিতেও error হয় বা exception throw হয়, তাহলে সব কাজ বাতিল হয়ে যাবে (rollback)।
ফলে database inconsistent অবস্থায় থাকবে না।


⚙️ এই কোডে কী হচ্ছে?

এখানে,

  1. প্রথমে Sale টেবিলে একটি নতুন row create করা হচ্ছে।

  2. তারপর প্রতিটি item এর জন্য সেই sale এর সাথে সম্পর্কিত multiple SaleItem create করা হচ্ছে।

যদি এর মধ্যে কোনো একটিতে problem হয় (যেমন: validation fail, DB error, etc.) — তখন আগের সব insert বা update undo (rollback) হয়ে যাবে। ফলে কোনো incomplete data database এ থাকবে না।


🧩 কোন কোন ক্ষেত্রে DB::transaction() use করা উচিত?

এগুলো সেইসব ক্ষেত্রে use করা হয়, যেখানে:
✅ একাধিক database operation একসাথে করতে হচ্ছে,
✅ যেগুলো logically একটার সাথে আরেকটা strongly depend করে,
✅ এবং সবগুলো কাজ successfully না হলে কোনো কাজই না হওয়াটাই ভালো

উদাহরণ:

  • Order create করার সময় + order items save করার সময়

  • Payment process করার সময় (payment table update + order status update)

  • User create করার সময় + profile create করার সময়

  • Inventory adjust করার সময় (stock reduce + sales history add)

  • Money transfer system এ (এক একাউন্ট থেকে টাকা deduct + অন্য একাউন্টে add)


✅ সংক্ষেপে বললে:
DB::transaction() use করা হয় multiple related DB changes একসাথে safely execute করার জন্য, যাতে কোনো একটিতে problem হলে সবকিছু আগের মতো rollback হয়ে যায়।

No comments

Theme images by fpm. Powered by Blogger.