当前位置: 代码迷 >> PHP >> YII 事物无效有关问题 HELP HELP HELP HELP HELP HELP !
  详细解决方案

YII 事物无效有关问题 HELP HELP HELP HELP HELP HELP !

热度:396   发布时间:2016-04-28 18:57:08.0
YII 事物无效问题 HELP HELP HELP HELP HELP HELP !!!!!!
各位大神们 入门PHP程序员求帮助

Yii事物

官方写法:
 

       $transaction=$connection->beginTransaction();
        try
        {
            $connection->createCommand($sql1)->execute();
            $connection->createCommand($sql2)->execute();
            //.... other SQL executions
            $transaction->commit();
        }
        catch(Exception $e)
        {
            $transaction->rollBack();
        }


自己封装的写法:
说明:$this->getDb()是父类通过Yii 获取到的$connection对象
我只是在实例化的时候把$connection对象传到Db层,然后Db层进行增删改查等操作
但是在DB层的时候,执行excuse()方法时候直接插入到数据库了,事物没起作用,求解!!!
service层

 public function addCourseRecommend($courseRecommend,$payWayArray)
    {
        try{
            $connection=$this->getDb();
            $transaction=$connection->beginTransaction();
            $this->courseRecommendDb= new CourseRecommendDb($connection);
            $this->payWayDb=new PayWayDb($connection);
            $this->courseRecommendDb->addCourseRecommend($courseRecommend);
            foreach($payWayArray as $tempPayWay)
            {
                $this->payWayDb->addPayWay($tempPayWay);
                $tempPayWayRecommend =new PayWayRecommend();
                $this->payWayDb->addPayWayRecommend($tempPayWayRecommend);
            }
            $this->commit($transaction);
        }catch (Exception $e){
            $this->rollback($transaction);
            $this->closeLink();
            throw $e;
        }
        $this->closeLink();
    }


------解决方案--------------------
但不明白你的代码在做什么
但需要注意的是:事务只在同一连接中有效
Yii 的数据库是基于 PDO 的,每次 new PDO 都会产生新的连接(这一点是与分立函数的数据库扩展是不同的)
  相关解决方案