ThinkPHP5 模型 - 事務支持


使用事務之前,先確保數據庫的存儲引擎支持事務操作。

  • MyISAM:不支持事務,主要用於讀數據提高性能
  • InnoDB:支持事務、行級鎖和並發
  • Berkeley DB:支持事務

ThinkPHP5 使用事務有 3 個常用方法:

$model->startTrans();   // 開啟事務
$model->rollback();	   // 事務回滾
$model->commit();	   // 提交事務

小例子:

<?php
/**
 * 事務測試
 */
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'));
}

  

參考鏈接:tp3模型的事務支持:TP模型---事務支持


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM