crx349 发表于 2024-3-6 14:03:56

Thinkphp5 事务和foreach连用注意事项

Thinkphp5 中使用 事务和foreach时出现

Db::startTrans();
                try{
                  foreach ($item_arr as $val){
                        

                  }
                  Db::commit();
                  $this->success('ok',$ids);
                }catch (\Exception $e) {
                  Db::rollback();
                  
                  $this->error('数据存储错误,请重试');
                }

会出现抛出异常,但是实际上数据库已经事务处理完成了。
解决办法:
Db::startTrans();
                try{
                  foreach ($item_arr as $val){
                        

                  }
                  Db::commit();
                  $this->success('ok',$ids);
                }catch (\think\Exception\DbException $e) {
                  Db::rollback();
                  
                  $this->error('数据存储错误,请重试');
                }


页: [1]
查看完整版本: Thinkphp5 事务和foreach连用注意事项