• YII2.0 在保存数据库内容会调用save()方法的注意事项


    在保存数据时,有事会用$model的beforSave()方法来添加模型的 创建时间create_time,更新时间update_time等字段,如下所示

    public function beforeSave($insert)
    {
        if (parent::beforeSave($insert)) {
            if ($insert) {
                $this->create_time = time();
                $this->update_time = time();
            
            } else {
                $this->update_time = time();
            }
            return true;
        } else {
            return false;
        }
    }

    需要特别注意的时,这样做虽然方便了,但前往不要忘记更改模型文件的ruls()方法,尤其是喜欢用gii生成代码的同学,

     public function rules()
        {
            return [
                [['imei','create_time', 'update_time'], 'required'],
                [['create_time', 'update_time', 'check_time'], 'integer'],
                [['imei'], 'string', 'length' => 15],
                [['network_address'], 'string', 'length' => 4],
                [['text'], 'string', 'max' => 255],
            ];
        }

    该方法会在save()方法之前对数据进行正确的验证,也就是说,需要把上面代码中红色标注的字段create_time,update_time等字段删除掉,这样就不会在进行验证了,如果不去掉,在调用

    $model->load(Yii::$app->request->post())之后,调用$model->save()时,会默认调用$model->validate()对$model进行验证,这里就会被卡主,
    $model->save()就肯定也是保存失败了,模型中的beforeSave()方法根本就没有机会执行,切记,切记,切记
  • 相关阅读:
    touchMove VS touchCancel
    svg viewbox 作用
    reactjs reactLink
    放开linux下的端口
    运算符重载函数作为类成员函数和友元函数 (转)
    MBean和MXBean 区别
    transfer-encoding
    CSRF
    vue知识拓展
    居中
  • 原文地址:https://www.cnblogs.com/iceman-/p/8691519.html
Copyright © 2020-2023  润新知