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();
}
}
}