Yii交易不起作用

时间:2014-05-13 01:18:10

标签: yii

我的代码看起来像这样:

$transaction = Yii::app()->db->beginTransaction();

    try {
        $film->save();
        $idFilm = $film->id; //working at here
        $view = new ViewModel();
        $view->type = 1;
        $view->id_films = $idFilm;
        $view->view_at = date('Y-m-d');
        $view->save();//not working, not save view
        $transaction->commit();
    } catch (Exception $e) {
        $transaction->rollBack();
    }

但是交易无效,即使视图未保存到数据库,电影也会保存到数据库中

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

验证失败时,不会出现异常。

在提交交易之前,您应该检查保存是否已成功完成。

$transaction = Yii::app()->db->beginTransaction();
$rollback = false;
$exception = null;
try {
    if ($film->save()) {
        $idFilm = $film->id;
        $view = new ViewModel();
        $view->type = 1;
        $view->id_films = $idFilm;
        $view->view_at = date('Y-m-d');
        if ($view->save()) {
            $transaction->commit();
        }
        else {
            $rollback = true;
            echo CHtml::errorSummary($view); // Error output, if $view validation or saving failed
        }
    }
    else {
        $rollback = true;
        echo CHtml::errorSummary($film); // Error output, if $film validation or saving failed
    }
}
catch (CDbException $e) {
    $rollback = true;
    $exception = $e;
}
catch (Exception $e) {
    $rollback = true;
    $exception = $e;
}
if ($rollback) {
    $transaction->rollBack();
}
if (!is_null($exception)) {
    throw new Exception($exception->getMessage(), $exception->getCode());
}

答案 1 :(得分:-1)

if( ! $view->save()) {
    //$transaction->rollBack(); <---
    var_dump($view->getErrors());
}
相关问题