欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2024-04-03 10:05:04
...
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 都会产生新的连接(这一点是与分立函数的数据库扩展是不同的)
YII 事物无效有关问题  HELP HELP HELP HELP HELP HELP !

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频