কেন DB::transaction() use করা হয়।
কেন DB::transaction() use করা হয়েছে?
Laravel এর DB::transaction() মূলত atomic operation নিশ্চিত করার জন্য use করা হয়।
মানে, এই কোড ব্লকে যা যা কাজ হচ্ছে (যেমন:
✅ sale create,
✅ সেই sale এর সাথে items create করা) —
যদি এর মধ্যে কোনো একটিতেও error হয় বা exception throw হয়, তাহলে সব কাজ বাতিল হয়ে যাবে (rollback)।
ফলে database inconsistent অবস্থায় থাকবে না।
⚙️ এই কোডে কী হচ্ছে?
এখানে,
-
প্রথমে
Saleটেবিলে একটি নতুন row create করা হচ্ছে। -
তারপর প্রতিটি item এর জন্য সেই sale এর সাথে সম্পর্কিত multiple
SaleItemcreate করা হচ্ছে।
যদি এর মধ্যে কোনো একটিতে 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