引擎是innodb。代码如下
try{
// …… ……一些代码
$this->model->begin();
if(!empty($goods_info) && !empty($shelf_num)){
$order_arr['total_money'] = 0;
$order_arr['good_num'] = 0;
//根据传递商品编号及编号下的数量信息,循环插入订单详情表
foreach ($goods_info as $val) {
$good_data = $this->model->findByid($val[0],array('price'));//查找商品价格信息
if(!empty($good_data) && $good_data[0]['price'] == $val[2]){
$order_arr['total_money'] += $val[2]*$val[1];//订单总金额
$order_arr['good_num'] += $val[1];//订单商品总数
$order_detail['barcode'] = $val[0];//商品编号
$order_detail['good_num'] = $val[1];//商品数量
$order_detail['price'] = $val[2];//商品价格
$this->model->create();
$this->model->save($order_detail);//保存到订单详情表
}else{
throw new Exception('001');
}
}
// …… …… 一些代码
$this->model->commit();
$this->model->end();
}catch(Exception $e) {
$this->model->rollback();
$arrData = $e->getMessage();
echo $arrData;
}
2 回答
![?](http://img1.sycdn.imooc.com/5458477300014deb02200220-100-100.jpg)
临摹微笑
TA贡献1982条经验 获得超2个赞
$good_data = $this->model->findByid($val[0],array('price'));//查找商品价格信息
if(!empty($good_data) && $good_data[0]['price'] == $val[2]){
$this->model->create();
$this->model->save($order_detail);//保存到订单详情表
$this->model->commit();
}else{
$res = $this->model->rollback();
$this->model->end();
}
if判断的是商品信息,else里走回滚,那你回滚了啥呢,这逻辑不对。
试着用try catch:
$this->model->begin();
try{
/* ...... */
$this->model->save($order_detail);
$this->model->commit();
}catch(Exception $e){
$this->model->rollback();
}
- 2 回答
- 0 关注
- 519 浏览
添加回答
举报
0/150
提交
取消