澳门新葡萄京网站 > 新葡萄京编程 > ThinkPHP实现事务回滚示例代码

ThinkPHP实现事务回滚示例代码
2020-02-10 21:24

ThinkPHP的事务回滚示例如下:

service

$m=D('YourModel');//或者是M();
$m2=D('YouModel2');
$m->startTrans();//在第一个模型里启用就可以了,或者第二个也行
$result=$m->where('删除条件')->delete();
$result2=m2->where('删除条件')->delete();
if($result && $result2){
$m->commit();//成功则提交
}else{
$m->rollback();//不成功,则回滚
}

图片 1

注意:MySQL数据库必须是Innodb和Bdb才能支持事务。

image

模拟动态代理事务

图片 2

image

测试类

图片 3

image

预测结果
模拟事务:开启事务
execute doLink
模拟事务:关闭事务
模拟事务:开启事务
execute doPick
模拟事务:关闭事务
execute unDo

实际结果
模拟事务:开启事务
execute doLink
模拟事务:关闭事务
模拟事务:开启事务
execute doPick
模拟事务:关闭事务
execute unDo

结果一致,运行正常

我们修改service和测试类
修改后的service(在事务方法中调用事务方法,在非事务方法中调用事务方法)

图片 4

图片.png

修改后的测试类

上一篇:Discuz批量替换帖子内容的方法 下一篇:没有了