普通的事務操作很簡單,最簡單的方式是使用 transaction 方法操作數據庫事務, 當閉包中的代碼發生異常會自動回滾, 例如:
Db::transaction(function () { Db::table('think_user')->find(1); Db::table('think_user')->delete(1); });
也可以手動控制事務, 例如:
// 啟動事務 Db::startTrans(); try { Db::table('think_user')->find(1); Db::table('think_user')->delete(1); // 提交事務 Db::commit(); } catch (\Exception $e) { // 回滾事務 Db::rollback(); }
分布式數據庫(多個服務器的數據庫之間的操作可以這樣寫)
Db::connect($config)->startTrans(); try{
Db::connect($config)->table('think_user')->find(1);
Db::connect($config)->table('think_user')->delete(1);
Db::connect($config)->commit();
}catch (\Exception $e){
Db::connect($config)->rollback();
$this->error();
}
//$config 就是數據庫的配置數據
