• thinkphp 多表事务处理


    try{
        $this->user = D('User');
        $this->user->startTrans(); //开始事务
    	$res = $this->user->Saveuser($where,$data);
    	$res1 = $this->user->Saveuser($where,$data);
    	if(!$res||!$res1){
    		throw new Exception('数据实例化失败'); 
    	}
    	$this->user->commit(); //确认事务
    }catch(Exception $e){
    	$this->user->rollback(); //回滚
    
    }
    

     

        /*
         * 添加酒店和房型
         * */
        public function insertAll($arr_hotel=array(),$arr_room=array()){
    
            $model = new Model();
            $model->startTrans();
    
            $flag=false;
    
            $hid = $model->table(C('DB_PREFIX').'hotel')->add($arr_hotel);
            if( $hid && count($arr_room) ==0 ){//如果没有传入房型的信息则,直接提交数据
              
                $flag=true;
            }else if( $hid && count($arr_room) >= 0){//存在对应房型信息,则添加对应的酒店编号,并处理提交
                for($i=0 ; $i<count($arr_room) ; $i++){
                    $arr_room[$i]['hid'] = $hid;
                }
                $rid = $model->table(C('DB_PREFIX').'room')->addAll($arr_room);
                if( $rid ){
                    $model->commit();
                    $flag=true;
                }
            }
    
            if(!$flag){ 
                   $model->rollback();
            }else{
                 $model->commit();
           }
            return $flag;
        }
    

      

    $Model = M();
    $Model->startTrans();
    $userRes = $Model->table('test_user')->add(['name'=>'admin']);
    $keyRes  = $Model->table('test_key')->add(['key'=>'test']);
    $taskRes = $Model->table('test_task')->add(['task'=>'test']);
    if (userRes && $keyRes && $taskRes) 
        $Model->commit();
    else
        $Model->rollback();
    

      批量事务

    $document->startTrans();           
            foreach($list as $k=>$v){
                // setField('value', $val);
                $isRight = $document->where(array('id'=>$v['id']))->setField('url',$name.'/'.$v['id'].'.html');
                if(!$isRight){
                    $error[] = $isRight;
                };
            };
            if(count($error)){
                $document->rollback();
                $return['code'] = 0;
                $return['msg'] = '修改栏目文章链接失败';
                exit(json_encode($return));
            };
            $document->commit();
    

      

    $trans_result = true;
                    $trans = M();
                    $trans->startTrans();   // 开启事务
    
                    try {   // 异常处理
                        // 更新实施
                        $busbidList = M("busbid")->where($map)->select();
                        foreach($busbidList as $k => $v) {
                            $map['id'] = $busbidList[$k]['id'];
                            $result = M('busbid')->where($map)->data($data)->save();
                            if ($result === false) {
                                throw new Exception(“错误原因”);
                            }
                        }
                    } catch (Exception $ex) {
                        $trans_result = false;
                        // 记录日志
                        Log::record("== xxx更新失败 ==", 'DEBUG'); 
                        Log::record($ex->getMessage(), 'DEBUG');
                    }
    
                    if ($trans_result === false) {
                        $trans->rollback();
                        // 更新失败
                        $array['status'] = 0;
                    } else {
                        $trans->commit();
                        // 更新成功
                        $array['status'] = 1;
                    }
    

      

  • 相关阅读:
    pandas openpyxl 设置Excel 列宽自适应
    tar 打包当前目录下文件但不包括该录
    pandas美化excel高亮某行
    学习笔记260—NMF 非负矩阵分解的原理及应用
    学习笔记259—低秩分解
    学习笔记258—张量的背景
    学习笔记261—MATLAB 不能保存变量问题及解决办法
    Creating PDF Reports with Pandas, Jinja and WeasyPrint
    520论文
    使用bat获取win设备信息
  • 原文地址:https://www.cnblogs.com/microtiger/p/8420998.html
Copyright © 2020-2023  润新知