往list 表里添加一行记录,然后更新一下user表里的status字段
先用 M 函数实例化一个空对象,使用 table 方法进行多个表的操作,如果操作成功则提交,失败则回滚
如下为thinkPHP3.1.2多表事务处理方式案例,注意table内填写的必须包含前缀的全名表table('tk_user'),很多时候我们可能需要可以自定义表前缀,为了灵活可以写成table(C('DB_PREFIX').'user');
public function ImportData() { $Model = M(); //先用 M 函数实例化一个空对象 $map = true; //先设置一个真值 $Model->startTrans(); //开启事务 echo "事务已开启........."; foreach ( $result as $key => $value ) { //$result为获取到的二维数组 if ($key == 0 || $value == "") { continue; } if(条件1){ $data['name'] = $result ['name']; $data['ban'] = $result ['ban']; $data['fee'] = $result ['fee']; //往list表里添加一条数据,添加的记录都存在Model里,最后每一条都成功时才会commit,有一条出错时都会rollback $res = $Model->table('list') -> add($data); if(条件2){ $condition['name'] = $result ['name']; $update['status'] = 1; $res2 = $Model->table('user') -> where($condition) -> data($update) -> save(); }else{ //设置fals的作用是为了最后判断事务提交,还是回滚 $map = false; } }else{ $map = false; } } echo "事务正在处理........."; if($map==true){ $Model->commit(); echo '操作成功'; }else{ $Model->rollback(); echo '操作失败'; } echo "事务结束下面的代码将不再受事务影响........."; }
参考来源:https://blog.csdn.net/qq_33867131/article/details/78060047
个人在订单案例中的一些用法
如果本文对你有帮助,欢迎打赏本站