ThinkPHP5 模型 - 事务支持

使用事务之前,先确保数据库的存储引擎支持事务操作。

  • MyISAM:不支持事务,主要用于读数据提高性能
  • InnoDB:支持事务、行级锁和并发
  • Berkeley DB:支持事务

ThinkPHP5 使用事务有 3 个常用方法:

1
2
3
$model ->startTrans();    // 开启事务
$model ->rollback();      // 事务回滚
$model ->commit();        // 提交事务

小例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
/**
  * 事务测试
  */
public  function  transaction()
{
     $modelA  = model( 'A' );
     $modelA ->startTrans();              // 开启事务A
     $result  $modelA ->save( $data1 );
     if ( $result  === false){
         $modelA ->rollBack();         // 事务A回滚
         $this ->error( '添加A信息失败,请重试' );
     }
  
     $modelB  = model( 'B' );
     $modelB ->startTrans();              // 开启事务B
     $result  $modelB ->save( $data2 );
     if ( $result  === false){
         $modelB ->rollBack();         // 事务B回滚
         $modelA ->rollBack();         // 事务A回滚
         $this ->error( '添加B信息失败,请重试' );
     }
  
     $modelC  = model( 'C' );
     $modelC ->startTrans();              // 开启事务C
     $result  $modelC ->save( $data3 );
     if ( $result  === false){
         $modelC ->rollBack();         // 事务C回滚
         $modelB ->rollBack();         // 事务B回滚
         $modelA ->rollBack();         // 事务A回滚
         $this ->error( '添加C信息失败,请重试' );
     }
  
     // 提交事务
     $modelC ->commit();
     $modelB ->commit();
     $modelA ->commit();
  
     $this ->success( '添加成功' , url( 'admin/index/add' ));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值