交易并不在Yii中工作 [英] Transaction doesn't work in Yii
本文介绍了交易并不在Yii中工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的code:
$transaction = Yii::app()->db->beginTransaction();
try {
$tModel->save();
$activationLink = new ActivationLink;
$activationLink->User_id = $tModel->id;
$activationLink->hash1 = User::generateHashCode(100);
$activationLink->hash2 = User::generateHashCode();
$activationLink->hash3 = User::generateHashCode();
$activationLink->time = time();
$activationLink->save();
User::sendActivatonLink($tModel->mail,$activationLink->id, $activationLink->hash1, $activationLink->hash2, $activationLink->hash3);
$transaction->commit();
$this->redirect(array('view', 'id' => $tModel->id));
} catch (Exception $e) {
$transaction->rollback();
Yii::app()->user->setFlash('error', "{$e->getMessage()}");
$this->refresh();
}
$的tModel
保存,但 $ activationLink
不那么它应该回滚。但事与愿违,为什么?
$tModel
saved but $activationLink
doesn't so it should rolled back. but it didn't ,why?
推荐答案
Yii的保存()时,就在验证失败时不抛出异常。因此,你必须检查保存(的结果)自己:
Yii save() does not throw an exception, when just the validation fails. Thus you have to check the result of save() yourself:
if (!$model->save())
$transaction->rollback();
//or:
if (!$model->save())
throw new Exception("This will trigger my catch statement block");
这篇关于交易并不在Yii中工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文