本文实例讲述了ThinkPHP 3.2.2实现事务操作的方法。分享给大家供大家参考,具体如下:
手册里说得非常清楚 :
5.3.19 事务支持
ThinkPHP提供了单数据库的事务支持,如果要在应用逻辑中使用事务,可以参考下面的方法:
启动事务:
1
|
$User ->startTrans() |
提交事务:
1
|
$User ->commit() |
事务回滚:
1
|
$User ->rollback() |
事务是针对数据库本身的,所以可以跨模型操作的 。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
|
// 在User模型中启动事务 $User ->startTrans() // 进行相关的业务逻辑操作 $Info = M( "Info" ); // 实例化Info对象 $Info ->save( $User ); // 保存用户信息 if (操作成功){ // 提交事务 $User ->commit() } else { // 事务回滚 $User ->rollback() } |
IndexController.class.php:
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
|
<?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程序设计有所帮助。