事务操作
- DbManager 链接管理器提供
DbManager操作事务
传参说明(代码示例看下文)
参数类型 | 参数说明 |
---|---|
string或array | 值为connectionName,代表当前协程下连接名相符的mysql链接执行事务 |
ClientInterface | 在invoke闭包中直接传入client,代表直接操作指定客户端 |
返回说明:bool 开启成功则返回true,开启失败则返回false
- DbManager->startTransaction($connection = ‘default’ ); // 参数名默认为default
- DbManager->commit($connection = ‘default’); // 如果不传,则提交当前协程下连接名称为default的事务
- DbManager->rollback($connection = ‘default’); // 如果不传,则回滚当前协程下连接名称为default的事务
Client 直接管理
无需传参
返回说明:bool 开启成功则返回true,开启失败则返回false
- ClientInterface->startTransaction();
- ClientInterface->commit();
- ClientInterface->rollback();
代码示例1
DbManager 管理事务 ,可以开启多个连接名下的客户端事务,进行多连接事务管理
try{
//开启事务
DbManager::getInstance()->startTransaction();
$res = $model->update(['is_vip'=>1]);
} catch(\Throwable $e){
//回滚事务
DbManager::getInstance()->rollback();
} finally {
//提交事务
DbManager::getInstance()->commit();
}
代码示例2
DbManager 管理事务,传递参数为ClientInterface类型,指定操作客户端
效果等同于示例3,直接操作客户端
// 指定取出 write 连接名下的客户端,并且执行开启事务
\EasySwoole\ORM\DbManager::getInstance()->invoke(function (EasySwoole\ORM\Db\ClientInterface $client){
// 开启事务
\EasySwoole\ORM\DbManager::getInstance()->startTransaction($client);
// ...
}, 'write');
当前内容版权归 EasySwoole 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 EasySwoole .