behaviors自动填充怎么就报错了昵?? [ 2.0 版本 ]
public function behaviors(){
return [
'class' => TimestampBehavior::className(),
'createdAtAttribute' => 'cdate',// 自己根据数据库字段修改
'updatedAtAttribute' => 'mdate', // 自己根据数据库字段修改
'value' => date('Y-m-d H:i:s', time()),
];
}
这段代码,不知道错在那里。我放在model层 报错 Class cdate does not exist 怎么会这样昵。 数据库里字段没有错的。
求解?
最佳答案
-
return [ [ 'class' => TimestampBehavior::className(), 'attributes' => [ ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'], //插入数据时;给'created_at', 'updated_at'填充当前时间戳 ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'], //更新数据时;给 'updated_at'填充当前时间戳 ], ], ];
还可以用beforeSave
共 5 条回复@474352380 你的方法确实可以,但是似乎你写错了吧。你可以看http://www.yiichina.com/tutorial/830
你少一个中括号return[ [ 'class' => TimestampBehavior::className(), 'createdAtAttribute' => 'cdate',// 自己根据数据库字段修改 'updatedAtAttribute' => 'mdate', // 自己根据数据库字段修改 'value' => date('Y-m-d H:i:s', time()), ] ];
@474352380 贴整个model吧,字段有,还报字段不存在?这只能说字段有问题吧,我给你的原始写法可以吗?其实你本身的写法最终实现的就是还是我给你的原始写法。
其他 3 个回答
-
虽然问题已解决,这里还是补充一下,
出现同样问题的可以试试以下方法:
楼主的代码除了少了一个[]括号外,
[['duration','begintime', 'cdate', 'mdate'], 'required']这个里面的'cdate', 'mdate'两个attributes可能需要删掉。
原因:
required 是在 timestampbehavior 之前执行。
required验证器执行时 timestampbehavior 还没来得及填写数据,如果此时'cdate', 'mdate'属性未填数据的话,required验证器会报错。结合app的错误日志,可以看看是不是required validate的问题
最爱红烧肉
注册时间:2014-11-07
最后登录:2017-10-27
在线时长:69小时2分
最后登录:2017-10-27
在线时长:69小时2分
- 粉丝11
- 金钱4740
- 威望30
- 积分5730