yii2自动更新时间
比如在我们的文章表中,有create_time和update_time两个字段,在yii里面,不用我们每次都去更新他们,可以利用Yii的行为更新时间。
在对应的model引入use yii\behaviors\TimestampBehavior;
,利用TimestampBehavior这个类处理。
然后定义model的behaviors
public function behaviors() {
return [
[
'class' => TimestampBehavior::className(),
'attributes' => [
# 创建之前
ActiveRecord::EVENT_BEFORE_INSERT => ['create_time', 'update_time'],
# 修改之前
ActiveRecord::EVENT_BEFORE_UPDATE => ['update_time']
],
#设置默认值
'value' => time()
]
];
}
观察yii\behaviors\TimestampBehavior
的源码可以看见。定义了两个变量,created_at和updated_at。
假设数据库中的创建时间字段和更新时间字段都是这个名。
可以直接在behaviors方法里面写以下代码
return [
TimestampBehavior::className();
]
此时我们用模型更新和新建数据的时候就就会自动更新两个字段了。
再次查看yii\behaviors\BlameableBehavior
里面有两个属性,created_by和updated_by,意如其名,是用来记录某一列数据的更新者和创建者,同样假设数据中已经有这两个字段了。
我们只需要在模型的behaviors方法引入他就能自动更新这两个字段。
return [
BlameableBehavior::className();
]
这里的字段名也可以自己自定义。写一个类继承自这个class类,里面定义和父类同样的变量名,设置为自己想要的值,我们引用自己定义的类,就实现了自定义字段名。
还没有评论,来说两句吧...