YII中使用事务

来源:互联网 发布:java编写电影购票系统 编辑:程序博客网 时间:2024/06/10 22:15

$transaction= Yii::app()->db->beginTransaction();//创建事务
$transaction->commit();//提交事务
$transaction->rollback();//回滚事务

 

//使用事务,操作如果失败,则回滚            $transaction=Yii::app()->db->beginTransaction();            try{                $orders_detial=  new TblOrderDetial();                $orders->orders_sn=$orders_sn=date('ymd-',$time).rand(1000,9999);                $orders->consignee=$_GET['consignee'];                $orders->shipping_id=$_GET['shipping'];                $orders->pay_id=$_GET['payment'];                $orders->goods_amount=$cart->getPrice();                $orders->add_time=date('Y-m-d H:I',$time);                $orders->address=$_GET['address'];                $orders->mobile=$_GET['mobile'];                $orders->save();                $orders_id=$orders->attributes['orders_id'];                //读取购物车内的信息,写入order_detial表中                $items=$cart->items();                $succ=array();                foreach($items as $k=>$v){                    $detialModel=new TblOrderDetial();                    $detialModel->orders_id=$orders_id;                    $detialModel->goods_id=$k;                    $detialModel->goods_name=$v['name'];                    $detialModel->shop_price=$v['shop_price'];                    $detialModel->goods_number=$v['num'];                    if($temp=$detialModel->save()){                        $succ[]=$temp;                    }                }                if($cart->cnt()==count($succ)){                    //如果入库的数量等于购物车里面的数量,则回滚                    $transaction->commit();                }            }//try end            catch(Exception $e){                $transaction->rollback();            }

0 0