TP 多表事務處理, 異常處理


                $tran_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) {
                    $tran_result = false;
                    // 記錄日志
                    Log::record("== xxx更新失敗 ==", 'DEBUG'); 
                    Log::record($ex->getMessage(), 'DEBUG');
                }

                if ($tran_result === false) {
                    $trans->rollback();
                    // 更新失敗
                    $array['status'] = 0;
                } else {
                    $trans->commit();
                    // 更新成功
                    $array['status'] = 1;
                }

 

         


 1 /*
 2 
 3      * 添加酒店和房型
 4 
 5      * */
 6 
 7     public function insertAll($arr_hotel=array(),$arr_room=array()){
 8 
 9 
10         $model = new Model();
11 
12         $model->startTrans();
13 
14 
15         $flag=false;
16 
17 
18         $hid = $model->table(C('DB_PREFIX').'hotel')->add($arr_hotel);
19 
20         if( $hid && count($arr_room) ==0 ){//如果沒有傳入房型的信息則,直接提交數據
21 
22           
23 
24             $flag=true;
25 
26         }else if( $hid && count($arr_room) >= 0){//存在對應房型信息,則添加對應的酒店編號,並處理提交
27 
28             for($i=0 ; $i<count($arr_room) ; $i++){
29 
30                 $arr_room[$i]['hid'] = $hid;
31 
32             }
33 
34             $rid = $model->table(C('DB_PREFIX').'room')->addAll($arr_room);
35 
36             if( $rid ){
37 
38                 $model->commit();
39 
40                 $flag=true;
41 
42             }
43 
44         }
45 
46 
47         if(!$flag){ 
48 
49                $model->rollback();
50 
51         }else{
52 
53              $model->commit();
54 
55        }
56 
57         return $flag;
58 
59     }

 

 

 
        

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM