(php) Yii 事务批量插入数据

$transaction=Yii::app->db->beginTransaction;
try{ $model1->save; $model2->save; $model3->save; $model4->save; $model5->save; //出错 $model6->save; $transaction->commit;
} catchException $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;
} catchException $e{ $transaction->rollBack;
}

先检查你的表引擎是否是innodb类型的,www.phpernote.com 提供技术支持。

发表评论

电子邮件地址不会被公开。 必填项已用*标注