his*_*rob 2 php mysql activerecord transactions yii
Yii事务不会回滚到下面的示例代码和保存在DB中的记录:
$transaction = Yii::app()->db->beginTransaction();
$mode_1 = new Orders;
$mode_1->id_order = 3333;
$mode_1->AWB = 3333;
$mode_2 = new Orders;
$mode_2->id_order = 4444;
$mode_2->AWB = 4444;
$mode_2->save();
$mode_1->save();
$transaction->rollback();
Run Code Online (Sandbox Code Playgroud)
任何的想法?.. 谢谢
eXt*_*eme 12
使用事务的正确方法是将它们与try-catch构造一起使用.在您的示例中,我认为问题的出现是因为您没有进行提交($ transaction-> commit()).
$transaction = Yii::app()->db->beginTransaction();
try {
if (!$model->save()) {
throw new Exception('Model cannot be saved.');
}
if (!$anothermodel->save()) {
throw new Exception('Anothermodel cannot be saved.');
}
$transaction->commit();
} catch (Exception $e) {
$transaction->rollback();
}
Run Code Online (Sandbox Code Playgroud)
编辑: $ model-> save()不会抛出异常,所以你需要抛出它!