我有一系列活动记录,并希望以这种方式用循环更改它们的某些字段:
$error = false;
foreach ($items as $item) {
$item->is_paid = self::PENDING;
$error = $error || !$item->save();
}
return $error;
我想要做的是更改所有这些项目的is_paid
属性。如果失败,则回滚其他人。如何使用事务来解决这个问题?
答案 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.)
}