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类,里面定义和父类同样的变量名,设置为自己想要的值,我们引用自己定义的类,就实现了自定义字段名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值