使用事務處理的話,需要數據庫引擎支持事務處理。比如 MySQL 的 MyISAM 不支持事務處理,需要使用 InnoDB 引擎。
使用 transaction 方法操作數據庫事務,當發生異常會自動回滾,例如:
1.自動控制事務處理
1 Db::transaction(function(){ 2 Db::table('user')->find(1); 3 Db::table('user')->delete(1); 4 });
2.手動控制事務,例如:
1 // 啟動事務 2 Db::startTrans(); 3 try{ 4 Db::table('user')->find(1); 5 Db::table('user')->delete(1); 6 // 提交事務 7 Db::commit(); 8 } catch (\Exception $e) { 9 // 回滾事務 10 Db::rollback(); 11 }