$transaction=Yii::app()->db->beginTransaction();
try{
$model1->save();
$model2->save();
$model3->save();
$model4->save();
$model5->save();
//出错
$model6->save();
$transaction->commit();
} catch(Exception $e){
$transaction->rollBack();
}
model1 , model2 , model3 , model4 , model5 照样存储成功!
如果在$model6->save()可能是因为某种原因没能成功插入或更新数据,这时候会返回false,但不会有异常抛出来驱动事物回滚。你应该判断如果save时返回了false,即没有插入或更新成功,应该手动抛出Exception,这样在捕获Exception后可以rollback。
$transaction=Yii::app()->db->beginTransaction();
try{
foreach ($models as $model) {
if (!$model->save()) {
throw new Exception();
}
}
$transaction->commit();
} catch(Exception $e){
$transaction->rollBack();
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。