zoukankan      html  css  js  c++  java
  • 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;
                    }
    

      

  • 相关阅读:
    我很喜欢玩游戏,那么我就适合做游戏程序员吗?
    宁可多花1000元租房,也绝不要去挤半小时地铁
    996 盛行的年代,互联网人如何平衡工作和生活 ?
    互联网公司里都有哪些潜规则?
    那些拼命加班的程序员们,后来都怎么样了?
    MongoDB更需要好的模式设计 及 案例赏析
    MongoDB 提升性能的18原则(开发设计阶段)
    关于MongoDB数据库的日志解析
    实现MongoDB读写分离的“读偏好”介绍
    MongoDB分片 在部署和维护管理 中常见事项的总结
  • 原文地址:https://www.cnblogs.com/microtiger/p/8420998.html
Copyright © 2011-2022 走看看