7

我有一组活动记录,并希望以这种方式通过循环更改其中的某些字段:

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

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

4

1 回答 1

18

通过这里的简要介绍,我能够在 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.)
} 
于 2013-04-03T16:07:46.803 回答