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的错误信息
Oct 09 PHP
学习使用PHP数组
Oct 09 PHP
PHP 动态随机生成验证码类代码
Apr 09 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
May 18 PHP
php设计模式 Builder(建造者模式)
Jun 26 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
php列出mysql表所有行和列的方法
Mar 13 PHP
PHP+JS三级菜单联动菜单实现方法
Feb 24 PHP
PHP常见数组函数用法小结
Mar 21 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
Jul 07 PHP
微信支付开发动态链接Native支付
Jul 12 PHP
PHP goto语句用法实例
Aug 06 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使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
详解JavaScript的变量
2019/04/04 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
Python实现的IP端口扫描工具类示例
2019/02/15 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
基于python检查矩阵计算结果
2020/05/21 Python
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
高职助产应届生自荐信
2013/09/24 职场文书
质量工程师岗位职责
2013/11/16 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
社区禁毒工作方案
2014/06/02 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
考博导师推荐信范文
2015/03/27 职场文书
政审证明材料
2015/06/19 职场文书
纪委立案决定书
2015/06/24 职场文书
Ruby处理YAML和json数据
2022/04/18 Ruby