zoukankan      html  css  js  c++  java
  • 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()方法根本就没有机会执行,切记,切记,切记
  • 相关阅读:
    Trie图
    Bestcoder Round#45
    Codeforces Round#308
    bestcoder44#1002
    LCA最近公共祖先 Tarjan离线算法
    HYSBZ 1269文本编辑器 splay
    NOI2005维修数列 splay
    hdu3487 伸展树(区间搬移 区间旋转)
    poj3580 伸展树(区间翻转 区间搬移 删除结点 加入结点 成段更新)
    hdu1890 伸展树(区间反转)
  • 原文地址:https://www.cnblogs.com/iceman-/p/8691519.html
Copyright © 2011-2022 走看看