在Yii中使用循环中的事务

时间:2013-04-03 15:49:11

标签: php yii transactions yii1.x

我有一系列活动记录,并希望以这种方式用循环更改它们的某些字段:

$error = false;
foreach ($items as $item) {
    $item->is_paid = self::PENDING;
    $error = $error || !$item->save();
}
return $error;

我想要做的是更改所有这些项目的is_paid属性。如果失败,则回滚其他人。如何使用事务来解决这个问题?

1 个答案:

答案 0 :(得分:17)

通过简短的查看here,我能够在yii中找到交易管理,以下内容适用于您:

$transaction = Yii::app()->db->beginTransaction();
try {
    foreach ($items as $item) {
        $item->is_paid = self::PENDING;
        $item->save();
    }
    $transaction->commit();
    // actions to do on success (redirect, alert, etc.)
} catch (Exception $e) {
    $transaction->rollBack();
    // other actions to perform on fail (redirect, alert, etc.)
}