在laravel5.3中使用事務
可以直接使用\DB::beginTransaction();使用
前提是數據庫表必須支持事務,目前mysql中表類型只有InnoDb支持事務
想要在一個數據庫事務中運行一連串操作,可以使用DB
門面的transaction
方法,如果事務閉包中拋出異常,事務將會自動回滾。如果閉包執行成功,事務將會自動提交。使用transaction
方法時不需要擔心手動回滾或提交:
DB::transaction(function () {
DB::table('users')->update(['votes' => 1]);
DB::table('posts')->delete();
});
手動使用事務
如果你想要手動開始事務從而對回滾和提交有一個完整的控制,可以使用DB
門面的beginTransaction
方法:
DB::beginTransaction();
你可以通過rollBack
方法回滾事務:
DB::rollBack();
最后,你可以通過commit
方法提交事務:
DB::commit();