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 相关文章推荐
一个颜色轮换的简单例子
Oct 09 PHP
AJAX for PHP简单表数据查询实例
Jan 02 PHP
php 在文件指定行插入数据的代码
May 08 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
Aug 22 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
php快递单号查询接口使用示例
May 05 PHP
CodeIgniter模板引擎使用实例
Jul 15 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
Yii2 rbac权限控制操作步骤实例教程
Apr 29 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
Dec 21 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边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
PHP的全局错误处理详解
2016/04/25 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
React中的refs的使用教程
2018/02/13 Javascript
jQuery实现模糊查询的方法分析
2018/05/10 jQuery
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
浅析Python中的for 循环
2016/06/09 Python
Python如何实现强制数据类型转换
2019/11/22 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
简单说下OSPF的操作过程
2014/08/13 面试题
优秀的教师个人的中文求职信
2013/09/21 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
护士长2014年度工作总结
2014/11/11 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书