我想在控制器中做事务控制代码如下
$model=$this->loadModel($id);
$trans = $model->dbConnection->beginTransaction();
try{
$model->attributes=$_POST['Groups'];
$model->members = $_POST['Groups']['members'];
if($model->save()){
echo "commited";
$trans->commit();
$this->redirect(array('view','id'=>$model->id));
}
$trans->rollBack();
}catch (Exception $e){
Yii::trace("update group info error ! {$id}");
$trans->rollBack();
//throw $e;
echo $e->__toString();exit;
}
在 CAdvancedArBehavior 中的 aftersave 里抛出异常。看log 是执行了rollback 但是数据已经保存到数据库里了。
事务控制失败,请大家指点,我怎么改才能使事务控制生效。
我环境
yii 1.1.10
mysql 5.1.36 MyISAM
php 5.2.11