zoukankan      html  css  js  c++  java
  • 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
            ]);
        }
  • 相关阅读:
    Google app engine python 2.5.4 安装ssl
    Ubuntu 10.04分辨率
    Google Voice 国内用户开通全攻略(图文)
    (linux)查看及修改文件权限以及相关
    InstallAnyWhere使用笔记制作升级补丁时的一些判断
    openoffice 编译依赖关系履历
    匹配连续的任意字词
    BT3 无线密码
    All roads lead to Rome, some smooth, some rough.
    test
  • 原文地址:https://www.cnblogs.com/xiong63/p/6737770.html
Copyright © 2011-2022 走看看