tp6在操作數(shù)據(jù)庫時(shí),如果出現(xiàn)錯(cuò)誤會(huì)直接拋出異常,單表操作時(shí)可以隨便搞了。在多表操作時(shí),如果后面的表出現(xiàn)異常會(huì)導(dǎo)致數(shù)據(jù)混亂,慘不忍睹。怎么解決呢?
當(dāng)然是啟用事務(wù)日志,在異常時(shí)回滾事務(wù),注意MySQL 的 MyISAM 不支持事務(wù)處理,需要使用 InnoDB 引擎。
// 啟動(dòng)事務(wù) Db::startTrans(); try { //表一保存 $user->money = $user->money-$proem['money']; $user->save(); // 表二保存 $where['user_bank_id'] = $proem['bankid']; $where['money'] = $proem['money']; $where['user_id'] = $this->uid; $where['create_time'] = time(); (new UserRawal)->save($where); // 提交事務(wù) Db::commit(); return $this->success(); } catch (\Exception $e) { // 回滾事務(wù) Db::rollback(); return $this->error($e->getMessage()); } return $this->error("錯(cuò)誤");
注意引入Db類
use think\facade\Db;
使用以上方法就可以避免數(shù)據(jù)混亂啦,點(diǎn)擊查看更多tinkphp技巧。