ThinkPHP5.0 模型类事务性操作

 //创建一个模型类
    $release=new  \app\admin\model\Release();
    $release->startTrans();//开启事务
    $release->rollback();//事务回滚
    $release->commit();//提交事务
————————————————

<?php
//例子如下:
public function transAction()
{
    $modelA = model(‘A‘);
    $modelA->startTrans();             // 开启事务A
    $result = $modelA->save($data1);
    if($result === false){
        $modelA->rollBack();        // 事务A回滚
        $this->error(‘添加失败‘);
    }

    $modelB = model(‘B‘);
    $modelB->startTrans();             // 开启事务B
    $result = $modelB->save($data2);
    if($result === false){
        $modelB->rollBack();        // 事务B回滚
        $modelA->rollBack();        // 事务A回滚
        $this->error(‘添加失败‘);
    }

    $modelC = model(‘C‘);
    $modelC->startTrans();             // 开启事务C
    $result = $modelC->save($data3);
    if($result === false){
        $modelC->rollBack();        // 事务C回滚
        $modelB->rollBack();        // 事务B回滚
        $modelA->rollBack();        // 事务A回滚
        $this->error(‘添加失败‘);
    }

    // 提交事务
    $modelC->commit();
    $modelB->commit();
    $modelA->commit();

    $this->success(‘添加成功‘, url(‘....‘));
}
————————————————

原文地址:https://www.cnblogs.com/fksdy/p/11741928.html

时间: 2024-08-18 10:05:33

ThinkPHP5.0 模型类事务性操作的相关文章

ThinkPHP5.0 模型调用

一.模型类可以使用静态调用或者实例化调用两种方式,例如: // 静态调用 $user = User::get(1); $user->name = 'thinkphp'; $user->save(); // 实例化模型 $user = new User; $user->name= 'thinkphp'; $user->save(); // 使用 Loader 类实例化(单例) $user = Loader::model('User'); // 或者使用助手函数`model` $use

ThinkPHP5.0 模型删除操作

1.删除模型数据,可以在实例化后调用delete方法 $user = User::get(1); $user->delete(); 2.根据主键删除(5.0.9版本以上destroy方法传入空数组和空字符串不会进行任何删除操作) User::destroy(1); // 支持批量删除多个数据 User::destroy('1,2,3'); // 或者 User::destroy([1,2,3]); 3.条件删除 数组进行条件删除 User::destroy(['status' => 0]);/

ThinkPHP5.0 模型查询操作

1.获取单个数据 //取出主键为1的数据 $user = User::get(1); echo $user->name; // 使用数组查询 $user = User::get(['name' => 'thinkphp']); // 使用闭包查询 $user = User::get(function($query){ $query->where('name', 'thinkphp'); }); echo $user->name; //实例化模型后调用查询 $user = new U

ThinkPHP5.0 模型更新操作

1.在取出数据后,更改字段内容后更新数据 $user = User::get(1); $user->name = 'thinkphp'; $user->email = '[email protected]'; $user->save(); 2.直接带更新条件来更新数据 $user = new User; // save方法第二个参数为更新条件 $user->save([ 'name' => 'thinkphp', 'email' => '[email protected

django的模型类管理器-----------数据库操作的封装

模型实例方法 str():在将对象转换成字符串时会被调用. save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句. delete():将模型对象从数据表中删除,ORM框架会转换成对应的delete语句. 模型类的属性 属性objects:管理器,是Manager类型的对象,用于与数据库进行交互. 当没有为模型类定义管理器时,Django会为模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects. 管理器是D

django框架的模型类定义及操作

在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库. 使用MySQL数据库首先需要安装驱动程序 pip install PyMySQL 在Django的工程同名子目录的__init__.py文件中添加如下语句 from pymysql import install_as_MySQLdb install_as_MySQLdb() 作用是让Django的ORM能以mysqldb的方式来调用PyMySQL. 修改DATABASES配置信息 DATABA

thinkPHP5.0的学习研究【架构】

2017年6月19日18:51:53 架构:1.ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方式来组织.2.MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M).视图(V).控制器(C),它们各自处理自己的任务.3.传统的访问方法:http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/参数/值-4.入口文件用户请求的PHP文件,负责处理一个请求(注意,不一定是URL请求)的

thinkphp5.0架构总览

ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方式来组织. MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M).视图(V).控制器(C),它们各自处理自己的任务. 5.0的URL访问受路由决定,如果关闭路由或者没有匹配路由的情况下,则是基于: http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/参数/值... 下面的一些概念有必要做下了解,可能在后面的内容中经常会被提及.

thinkphp5.0和thinkphp3.2的区别不同之处

先看目录结构: thinkphp 5.0的目录结构, 文档:https://www.kancloud.cn/manual/thinkphp5/118008 project 应用部署目录 ├─application 应用目录(可设置) │ ├─common 公共模块目录(可更改) │ ├─index 模块目录(可更改) │ │ ├─config.php 模块配置文件 │ │ ├─common.php 模块函数文件 │ │ ├─controller 控制器目录 │ │ ├─model 模型目录 │