ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 事务操作 事务操作的传参说明,分为以下两种传参情况 | 参数类型 | 参数说明 | | --- | --- | | string或array | 值为connectionName,代表当前协程下连接名相符的mysql链接执行事务 | | ClientInterface | 在invoke闭包中直接传入client,代表直接操作指定客户端 | 返回说明:bool 开启成功则返回true,开启失败则返回false ## 开启事务 ~~~php DbManager::getInstance()->startTransaction($connectionNames = 'default'); ~~~ ## 提交事务 ~~~php DbManager::getInstance()->commit($connectName = null); ~~~ ## 回滚事务 ~~~php DbManager::getInstance()->rollback(); ~~~ ## 事务用例1 ~~~php $user = UserModel::create()->get(4); $user->age = 4; // 开启事务 $strat = DbManager::getInstance()->startTransaction(); // 更新操作 $res = $user->update(); // 直接回滚 测试 $rollback = DbManager::getInstance()->rollback(); // 返回false 因为连接已经回滚。事务关闭。 $commit = DbManager::getInstance()->commit(); var_dump($commit); ~~~ ## 事务用例2 ~~~php $user = DbManager::getInstance()->invoke(function ($client){ // 使用事务方式 具体说明查看文档 http://www.easyswoole.com/Cn/Components/Orm/transactionOperations.html DbManager::getInstance()->startTransaction($client); $testUserModel = Model::invoke($client); $testUserModel->state = 1; $testUserModel->name = 'Siam'; $testUserModel->age = 18; $testUserModel->addTime = date('Y-m-d H:i:s'); $data = $testUserModel->save(); DbManager::getInstance()->commit($client); return $data; }); var_dump($user); ~~~