本文实例讲述了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程序设计有所帮助。