Active Record 情况下如何进行事务处理操作? [ 2.0 版本 ]
Active Record
情况下如何进行事务处理操作
最佳答案
-
johnny1991 发布于 2017-10-26 10:38 举报
$transaction = Yii::$app->getDb()->beginTransaction(); try { xxxx } catch (Exception $e) { $transaction->rollBack(); throw $e; } $transaction->commit(); return true;
共 2 条回复johnny1991 回复于 2017-10-26 10:53 回复- 你要确保在这个try外面没有transaction
- 失败是否有抛出异常并且被这里exception cache到
其他 1 个回答
-
@晦涩de咚 事务嵌套。不过看你说的是 如果一个表保存失败,全部回滚。也就不需要事务嵌套了。
<?php $trans = Yii::$app->gtDb->beginTransaction(); try{ $A = A::find()->one(); if(!$A->save()){ throw new Yii\db\Exception('A表更新失败'); } $B = B::find()->one(); if(!$B->save()){ throw new Yii\db\Exception('B表更新失败'); } $C = C::find()->one(); if(!$C->save()){ throw new Yii\db\Exception('C表更新失败'); } $D = D::find()->one(); if(!$D->save()){ throw new Yii\db\Exception('D表更新失败'); } } catch (Yii\db\Excepton $e){ $trans->rollBack(); return $e->getMessage(); } ?>
晦涩de咚
注册时间:2015-08-03
最后登录:2020-09-04
在线时长:356小时20分
最后登录:2020-09-04
在线时长:356小时20分
- 粉丝36
- 金钱13598
- 威望340
- 积分20558