hyperf/database 衍生于 illuminate/database,所以Hyperf 下的跨库事务操作也是是基于连接的。当你需要回滚不是在default
连接上的表操作,使用Db::rollBack()
是不生效的,需要指定连接。
示例代码
<?php
use Hyperf\DbConnection\Db;
class test
{
public function testFunc()
{
Db::beginTransaction();
Db::connection('test')->beginTransaction();
try {
$data['name'] = '123';
// 默认(default)数据库链接表修改
Db::table('default')->update($data);
// test数据库链接表修改
Db::connection('test')->table('test')->update($data);
Db::commit();
Db::connection('test')->commit();
} catch (\Throwable $ex) {
Db::rollBack();
Db::connection('test')->rollBack();
}
}
}