很多时候,程序在进行多表增删改操作的时候,为了保证多个表之间数据的一致性,我们经常要用到事务处理。
1.什么是事务
事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。
2.下面是Yii2的事务处理
$transaction = Yii::$app->db->beginTransaction(); //开启事务
try{
//删除$model中的数据
$res = $model->deleteAll($cond);
if(!$res)
throw new \Exception('操作失败!');
//删除$model对应的$relation中的数据
$rt = $relation->deleteAll(['polymeric_id'=>$cond['id']]);
if(!$rt)
throw new \Exception('操作失败!');
//以上执行都成功,则对数据库进行实际执行
$transaction->commit();
return true;
}catch (\Exception $e){
//如果抛出错误则进入catch,先callback,然后捕获错误,返回错误
$transaction->rollBack();
//将错误放入模型的 lastError 属性中, setFlash时直接 Model->lastError 可获得错误
$this->lastError = $e->getMessage() ;
return false;
}
以上就是yii事务的简单应用。事务的一般应用在于多表操作,只有所有数据库操作都成功了,才会执行,其中一个地方失败,就不会执行,以保证数据库动作的完整性。
本文链接:https://www.23thi.com/201.html
除非特殊声明,本站文章均为原创,转载请务必保留本文链接