thinkPHP3.1.2多表事务实例

往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

个人在订单案例中的一些用法

image.png

支付宝扫码打赏 微信扫码打赏

如果本文对你有帮助,欢迎打赏本站

喜欢 ()or分享
    匿名评论
  • 评论
人参与,条评论