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通过COM使用ADODB的简单例子
Dec 31 PHP
PHP及Zend Engine的线程安全模型分析
Nov 10 PHP
基于php权限分配的实现代码
Apr 28 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
浅谈PHP接收POST数据方式
Jun 05 PHP
smarty高级特性之过滤器的使用方法
Dec 25 PHP
Laravel学习教程之View模块详解
Sep 18 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 PHP
PHP中一个有趣的preg_replace函数详解
Aug 15 PHP
PHP实现微信退款功能
Oct 02 PHP
实例分析10个PHP常见安全问题
Jul 09 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
风格模板初级不完全修改教程
2006/10/09 PHP
function.inc.php超越php
2006/12/09 PHP
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
Extjs Ajax 乱码问题解决方案
2009/04/15 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
创建一般js对象的几种方式
2017/01/19 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
基于Django的ModelForm组件(详解)
2017/12/07 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
python在文本开头插入一行的实例
2018/05/02 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
Python迭代器与生成器基本用法分析
2018/07/26 Python
python模块导入的细节详解
2018/12/10 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
财务人员个人工作总结
2015/02/27 职场文书
初三语文教学反思
2016/03/03 职场文书
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python
git中cherry-pick命令的使用教程
2022/06/25 Servers