事务不生效
try {
Db::beginTransaction();
//入库
$isUp = AppClienteleModel::whereId($id)->update($data);
if (!$isUp) {
throw new \Exception("档案修改失败!");
}
//contact insert
$contactTemp = [];
$date = date('YmdHis');
foreach ($checkRes['ids'] as $contact) {
if ($contact=="buffer"){
throw new \Exception("test手动触发回滚--!".$contact);
}
$contactTemp[] = [
'type' => strpos($contact, '@') === false? 1 : 2,
'clientele_id' => $id,
'admin_id' => $adminId,
'contact' => $contact,
'created_at' => $date,
'updated_at' => $date,
];
}
if ($contactTemp) {
$isInsert = AppClienteleContactModel::insert($contactTemp);
if (!$isInsert) {
throw new \Exception("联系方式入库失败!");
}
}
Db::commit();
} catch (\Throwable $exception) {
Db::rollBack();
throw $exception;
}
这里写步骤
$checkRes['ids'] 存入一个测试值buffer 手动触发回滚结果并不会滚,修改内容还是入库了!
"illuminate/database": "^8.83",
Workerman version:4.1.13
PHP version:7.3.33
Event-Loop:\Workerman\Events\Select
INNODB?
对
如果你AppClienteleModel里指定了connection为xxx,开始事务的时候也要指定connection。
Db::connection(xxx)->beginTransaction();
我测试这个修改有效,感谢
真厉害,我比较好奇,是怎么发现它有单独指定了连接。