开发者社区> 问答> 正文

Yii 事务批量插入数据的问题

$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 照样存储成功!

展开
收起
落地花开啦 2016-06-17 16:40:48 1975 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    如果在$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();
    }
    2019-07-17 19:43:06
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载