yii2开启事务

public function actionAdd()
    {
        $model = new Goods();
        $model->setScenario('insert');
    
        if ($model->load(Yii::$app->request->post())) {
            
            $model->image = UploadedFile::getInstance($model, 'image');
            
            if ($model->validate()) {
            
                $model->cover = Yii::$app->security->generateRandomString(10) . '.' . $model->image->extension;
                if (floatval($model->price_original) < 0.01) {
                    $model->price_original = null;
                }
            
                $transaction = Yii::$app->db->beginTransaction();
                try {
                    if (!$model->save(false)) {
                        throw new \Exception('商品添加失败!');
                    }
                    
                    $filename = Yii::getAlias(Yii::$app->params['goods.coverPath']) . DIRECTORY_SEPARATOR . $model->cover;
                    if (!$model->image->saveAs($filename)) {
                        throw new \Exception('封面图片添加失败!');
                    }
                    
                    // 记录商品库存
                    $goodsSurplus = new GoodsSurplus();
                    $goodsSurplus->goods_id = $model->id;
                    $goodsSurplus->surplus_before = 0;
                    $goodsSurplus->amount = $model->surplus;
                    $goodsSurplus->surplus_after = $model->surplus;
                    $goodsSurplus->remark = '初始化库存。';
                    
                    if (!$goodsSurplus->save(false)) {
                        throw new \Exception('商品库存记录失败!');
                    }
                    
                    $transaction->commit();
                    Yii::$app->session->setFlash('success', '成功添加商品“'.$model->name.'”。');
                    return $this->refresh();
                } catch (\Exception $e) {
                    $transaction->rollBack();
                    Yii::$app->session->setFlash('danger', $e->getMessage());
                }
            }
        }
    
        return $this->render('form', [
            'model' => $model
        ]);
    }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值