Yii2-插入记录时,它会自动重复

时间:2019-02-26 16:54:47

标签: php yii2

此表格每天会收到+-400条记录,很少有记录会自动复制,相差1或2秒。

NumsController.php

public function actionCreate()
{
    $model = new Nums();
    $model->scenario = Nums::SCENARIO_CREATE;

    if ($model->load(Yii::$app->request->post()) && $model->save()) {

        try {
            if ($model->treatment == 3 && ($model->cc == null || $model->cc == '')) {
                if ($EmailTo = filter_var($model->idUser->email,FILTER_SANITIZE_EMAIL))
                Yii::$app->mailer->compose()
                    ->setFrom('xxxxxx')
                    ->setTo($EmailTo)
                    ->setCc(array('xxxxxx', 'xxxxxx', 'xxxxxx'))
                    ->setSubject("xxxxxx")
                    ->setTextBody('Plain Text content')
                    ->setHtmlBody(
                        "Email Text Example")
                    ->send();
            }elseif ($model->treatment == 3 && ($model->cc != null && $model->cc != '')){
                if ($EmailTo = filter_var($model->idUser->email,FILTER_SANITIZE_EMAIL))
                if($EmailCC = filter_var($model->cc,FILTER_SANITIZE_EMAIL))
                Yii::$app->mailer->compose()
                    ->setFrom('xxxxxx')
                    ->setTo($EmailTo)
                    ->setCc(array($EmailCC, 'xxxxxx', 'xxxxxx', 'xxxxxx'))
                    ->setSubject("xxxxxx")
                    ->setTextBody('Plain Text content')
                    ->setHtmlBody(
                        "Other Email Text Example")
                    ->send();
            }
            return $this->redirect(['create']);

        }catch(Swift_SwiftException $exception){
            Yii::$app->session->setFlash('warning', "Email not sent");
            return $this->redirect(['view', 'id' => $model->id]);
        }

    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}

我知道代码令人困惑,但这会是代码问题吗? 可能是服务器问题吗?是它发生了几次,在400次中只有2次。

我有一个这样的条件验证器

['id_user', 'required',
            'when' => function ($model) {
                return $model->treatment == '2' OR $model->treatment == '3';
            },
            'whenClient' => "function (attribute, value) {
                return $('#treatment').val() == '2' || $('#treatment').val() == '3';
            }",

            'on' => self::SCENARIO_CREATE
        ],

更新

beforeValidate()in common \ models \ Nums.php

public function beforeValidate()
{
    if ($this->scenario == self::SCENARIO_CREATE){
        $this->a = Yii::$app->user->identity->id;
        $this->date = date('Y-m-d H:i:s');
    }else {
        $this->a = $this->a;
        $this->date = $this->date;
    }

    return parent::beforeValidate(); // TODO: Change the autogenerated stub
}

0 个答案:

没有答案