在Yii中循环中使用事务

7
我有一个活动记录的数组,想用循环以以下方式更改它们的某些字段:
$error = false;
foreach ($items as $item) {
    $item->is_paid = self::PENDING;
    $error = $error || !$item->save();
}
return $error;

我想要做的是改变所有这些项目的is_paid属性。如果有一个失败了,其他的就回滚。我该如何使用事务来解决这个问题?
1个回答

19

通过简要查看这里,我能够找到 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.)
} 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接