yii框架开启事务

Posted ノGHJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yii框架开启事务相关的知识,希望对你有一定的参考价值。

技术分享
 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
        ]);
    }
技术分享

以上是关于yii框架开启事务的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL事务的四种隔离类型以及PHP框架Yii2中的源码解读和实际应用

MYSQL事务的四种隔离类型以及PHP框架Yii2中的源码解读和实际应用

Yii查看(输出)当前页面执行的sql语句

yii使用之缓存

yii2框架的错误处理

MyBatis框架—动态 SQL配置文件事务