تراکنش ها یا Transactions عملیاتی است که به شما اجازه می ده تا از صحت انجام یک فرآیند مطمئن و از درج ناقص اطلاعات جلوگیری کنید. به عنوان مثال وقتی قصد انجام یک سری عملیات حساس روی دیتابیس دارید و باید مطمئن باشید که فرآیند تغییرات در SQL یا دیتابیس شما به درستی انجام شده .
مثال ساد تر، وقتی که میخواهید یکسری دیتا را که به هم وابسته نیز هستند رو در تیبل های مختلف وارد کنید و باید مطمئن بشید که یا همه دیتا ها با موفقیت ثبت میشه و یا هیچکدام ثبت نمیشه (Atomic) .
برای اجرای این قابلیت در لاراول، ۲ روش خودکار و دستی وجود داره.
روش اول: عملیات Commit و Rollback رو خودکار انجام میشه:
use Illuminate\Support\Facades\DB; DB::transaction( function () { // example DB::update('update users set votes = 1'); DB::delete('delete from posts'); });
روش دوم: عملیات Commit و Rollback بصورت دستی انجام میشه:
try { DB::beginTransaction(); DB::update('update users set votes = 1'); DB::commit(); } catch(Exception $e) { DB::rollBack(); }