tp5.1 数据库没有写入数据 但是事务却没有执行

今天遇到个问题;测试购买商品的时候,支付完了发现订单没有写道数据库。
//
$boolData = false;
Db::startTrans();
try{
i n s e r t O r d e r = [ ′ u s e r i d ′ = > insertOrder = [ 'user_id'=> insertOrder=[userid=>this->user_id,
‘order_sn’=>$this->order->getOrderSn(),
‘create_time’=>time(),
‘province’=> $address[‘province’],
‘city’=> $address[‘city’],
‘county’=> a d d r e s s [ ′ c o u n t y ′ ] , ′ a d d r e s s ′ = > address['county'], 'address'=> address[county],address=>address[‘addr’],
‘mobile’=> a d d r e s s [ ′ m o b i l e ′ ] , ′ c o n s i g n e e ′ = > address['mobile'], 'consignee'=> address[mobile],consignee=>address[‘name’],
‘goods_price’=> g o o d s [ ′ g o o d s p r i c e ′ ] , ′ o r d e r a m o u n t ′ = > goods['goods_price'], 'order_amount'=> goods[goodsprice],orderamount=>goods[‘goods_price’],
‘order_num’=> g o o d s n u m , ′ o r d e r t y p e ′ = > goods_num, 'order_type'=> goodsnum,ordertype=>goods[‘goods_type’],
];

		// 生成订单 
		$getOrderID = Db::name("order")->insertGetId($insertOrder);
		

		// 生成订单商品参数
		Db::name('order_goods')->insert([
				'order_id'=>$getOrderID,
				'goods_id'=>$goods_id,
				'goods_name'=>$goods['goods_name'],
				'goods_suggest'=>$goods['goods_suggest'],
				'goods_num'=>$goods_num,
				'goods_price'=>$goods['goods_price'],
				'default_img'=>$goods['default_img'],
			]);

		// 生成订单日志
		Db::name("order_action")->insert([
				'order_id'=>$getOrderID,
				'action_user'=>$this->user_id,
				'action_note'=>'用户下单',
				'log_time'=>time(),
				'status_desc'=>'用户下单',
			]);

		// 订单减库存 同时添加累计购买数量
		Db("goods")->where(['goods_id'=>$goods_id])->update([
				'goods_stock'=> $goods['goods_stock'] -1,
				'goods_sale_num' =>$goods['goods_sale_num'] +1,
			]);
		
		Db::commit();
		$boolData = true;
	}catch(\Exception $e){

		Db::rollback();
		$boolData = false;
	}
	
	if($boolData == false){
		return ajaxRetuen(['status'=>300,'msg'=>'下单失败']);
	}

	// 打开h5支付
	$wxPay = logic\WxPay::getInstance();
	$payData = $wxPay->pay($insertOrder['order_sn'],$insertOrder['order_amount']);
	return ajaxRetuen($payData);

最后发现代码没有逻辑问题,数据库没有写入数据 也没有执行回滚操作 直接唤起支付了。
最后找了好久才发现 Db::name() 跟Db() 不能同时写 要么全用Db::name(); 要么全用Db

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值