ThinkPHP 3.2.2实现事务操作的方法


Posted in PHP onMay 05, 2017

本文实例讲述了ThinkPHP 3.2.2实现事务操作的方法。分享给大家供大家参考,具体如下:

手册里说得非常清楚 :

5.3.19 事务支持

ThinkPHP提供了单数据库的事务支持,如果要在应用逻辑中使用事务,可以参考下面的方法:

启动事务:

$User->startTrans()

提交事务:

$User->commit()

事务回滚:

$User->rollback()

事务是针对数据库本身的,所以可以跨模型操作的 。

例如:

// 在User模型中启动事务
$User->startTrans()
// 进行相关的业务逻辑操作
$Info = M("Info"); // 实例化Info对象
$Info->save($User); // 保存用户信息
if (操作成功){
  // 提交事务
  $User->commit()
}else{
  // 事务回滚
  $User->rollback()
}

IndexController.class.php:

<?php
namespace SMS\Controller;
use Think\Controller;
class IndexController extends Controller {
  public function index(){
    $data['operator'] = 'Testss';
    M()->startTrans();
    $result = M('feehistory')->add($data);
    $result1 = $result2 = true;
    if(!empty($result)){
      $regdelData['level'] = '111';
      $result1 = M('regdel')->add($regdelData);
      $regData['level'] = '101';
      $result2 = M('reg')->where("registryCode='13693536752-SJB-HUAX-12345678'")->save($regData);
    }
    if(!empty($result) && !empty($result1) && !empty($result2) ){
      M()->commit();
      //$this->success('事物提交',__ROOT__);
      echo '事物提交';
    }else{
      M()->rollback();
      //$this->error('事物回滚',__ROOT__);
      echo '事物回滚';
    }
  }
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
PHP Zip解压 文件在线解压缩的函数代码
May 26 PHP
PHP及Zend Engine的线程安全模型分析
Nov 10 PHP
php格式化日期和时间格式化示例分享
Feb 24 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
PHP编译安装中遇到的两个错误和解决方法
Aug 20 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 PHP
php防止用户重复提交表单
Nov 02 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
php用户登录之cookie信息安全分析
May 13 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
Oct 29 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 PHP
PHP实现Session入库/存入redis的方法
May 04 #PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
May 04 #PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
May 04 #PHP
PHP调用Mailgun发送邮件的方法
May 04 #PHP
PHP实现图片的等比缩放和Logo水印功能示例
May 04 #PHP
Yii2数据库操作常用方法小结
May 04 #PHP
Yii2中添加全局函数的方法分析
May 04 #PHP
You might like
php 无极分类(递归)实现代码
2010/01/05 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
php session的锁和并发
2016/01/22 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
javascript中this关键字详解
2016/12/12 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
详解Python中的循环语句的用法
2015/04/09 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
外贸公司实习自我鉴定
2013/09/24 职场文书
优秀学生干部个人的自我评价
2013/10/04 职场文书
出生医学证明样本
2014/01/17 职场文书
运动会稿件200字
2014/02/07 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
Flask搭建一个API服务器的步骤
2021/05/28 Python
java实现对Hadoop的操作
2021/07/01 Java/Android
js 实现验证码输入框示例详解
2022/09/23 Javascript