• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

YII 事物无效问题 HELP HELP HELP HELP HELP HELP

php 搞代码 3年前 (2022-01-23) 66次浏览 已收录 0个评论
文章目录[隐藏]

各位大神们 入门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 都会产生新的连接(这一点是与分立函数的数据库扩展是不同的)

但不明白你的代码在做什么
但需要注意的是:事务只在同一连接中有效
Yii 的数据库是基于 PDO 的,每次 new PDO 都会产生新的连接(本&文来源gao@daima#com搞(%代@#码网@这一点是与分立函数的数据库扩展是不同的)

谢谢版主,已经解决。
我这样的做法是为了在service中调用多个业务的DB来实现事物。想法应该是没错的,具体错误已经解决了。

经过排查之后找到是数据库引擎问题,我要操作那个表类型不知道怎么变成 MyISAM 了。

MyISAM 和 InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快。

折腾了一上午,刚开始也考虑到可能是数据库引擎问题,但是可能性比较小就忽略了,大家以后还是要细心啊!!!!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:YII 事物无效问题 HELP HELP HELP HELP HELP HELP

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址