tp5 事务内多种sql方法错误
anlondon Lv6
问题

在修改项目时,遇到一个新旧交替的地方,事务内既有sql语句,又有tp的模型对象,

导致程序虽然能正常运行,sql语句也都是正常的,但是因为修改sql的方式不同,从而使模型修改的数据始终会被回滚

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Db::startTrans();
try{
//更新茶碗数据
Db::name('user_bowl')->where('user_id',$user_id)->update(['bowl'=>$after,'updatetime'=>$time]);
//插入茶碗变更记录
Db::name('user_bowl_log')->insert(['user_id'=>$user_id,'before'=>$before,'after'=>$after,'memo'=>$memo,'createtime'=>$time]);

//修改优惠券状态
$Coupons = \addons\shopro\model\Coupons($id);
$Coupons->status = 1;//已被领取
$Coupons::save();

Db::commit();
} catch (\Exception $e) {
Db::rollback();
//return $e;
return false;
}

运行上述代码,不会报任何错误,检查数据库,除了Coupons模型对应的数据表,其他的表数据都正常改变了。

最后不得已,只好修改模型方法为db::name()的方式,才正常。

具体原因,就不得而知了

 Comments