牛骨文教育服务平台(让学习变的简单)
博文笔记

Yii 事务处理

创建时间:2015-02-01 投稿人: 浏览次数:609
$connection=new CDbConnection($dsn,$username,$password);
//或
$connection=Yii::app()->db;   // 假设你已经建立了一个 "db" 连接
//原始方式:
$transaction=$connection->beginTransaction();

try
{

    $connection->createCommand($sql1)->execute();

    $connection->createCommand($sql2)->execute();

    //.... other SQL executions
 
    $transaction->commit();

}

catch(Exception $e) // 如果有一条查询失败,则会抛出异常

{

    $transaction->rollBack();

}


 

AR中使用方法:

每个 AR 实例都含有一个属性名叫 dbConnection ,是一个 CDbConnection 的实例,这样我们可以在需要时配合 AR 使用由 Yii DAO 提供的 事务 功能:

$model=Post::model();

$transaction=$model->dbConnection->beginTransaction();

try
{
    // 查找和保存是可能由另一个请求干预的两个步骤
    // 这样我们使用一个事务以确保其一致性和完整性
    $post=$model->findByPk(10);

    $post->title="new post title";

    $post->save();

    $transaction->commit();

}

catch(Exception $e)
{

    $transaction->rollBack();

}

 

注意:上面红色部分其实都是CDbconnection的实例

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。