/** * 事務 */ public function transaction(){ Db::startTrans(); try{ Db::name('version')->where('id','1')->update(['version'=>1.1]); Db::name('version')->where('id','2')->update(['versions'=>2]); Db::name('version')->where('id','3')->update(['version'=>3.3]); Db::name('version')->where('id','4')->update(['version'=>4.4]); echo 'try'; // 提交事務 Db::commit(); //$this->success('數據更新成功!'); dump('success'); } catch (\Exception $e) { echo 'catch'; // 回滾事務 Db::rollback(); dump($e->getMessage()); //$this->error('數據更新錯誤' & $e->getMessage()); } }
二、手動控制事務 (***) // 開啓事務 Db::startTrans(); // 事務 try{ // 刪除數據id 31 $a=Db::table("user")->delete(31); // 判斷是否刪除成功 if (!$a) { Db::rollback(); throw new \Exception("刪除id 31 數據沒有成功"); } // 刪除不存在的數據 id 32 $b=Db::table("user")->delete(32); // 判斷是否刪除成功 if (!$b) { Db::rollback(); throw new \Exception("刪除id 32 數據沒有成功"); } // 執行提交操做 Db::commit(); }catch(\Exception $e){ // 回滾事務 Db::rollback(); // 獲取提示信息 dump($e->getMessage()); }
public function transaction() { $modelA = model('A'); $modelA->startTrans(); // 開啓事務A $result = $modelA->save($data1); if($result === false){ $modelA->rollBack(); // 事務A回滾 $this->error('添加A信息失敗,請重試'); } $modelB = model('B'); $modelB->startTrans(); // 開啓事務B $result = $modelB->save($data2); if($result === false){ $modelB->rollBack(); // 事務B回滾 $modelA->rollBack(); // 事務A回滾 $this->error('添加B信息失敗,請重試'); } $modelC = model('C'); $modelC->startTrans(); // 開啓事務C $result = $modelC->save($data3); if($result === false){ $modelC->rollBack(); // 事務C回滾 $modelB->rollBack(); // 事務B回滾 $modelA->rollBack(); // 事務A回滾 $this->error('添加C信息失敗,請重試'); } // 提交事務 $modelC->commit(); $modelB->commit(); $modelA->commit(); $this->success('添加成功', url('admin/index/add')); }