hrxf168 2017-11-25 19:15:12 188次浏览 1条评论 2 1 0

一、用内置行为AttributeBehavior

public function behaviors()
{
    return [
        [
            'class'      => AttributeBehavior::className(),
            'attributes' => [
                //创建活动记录时,自动设置create_time和update_time字段为当前时间戳
                ActiveRecord::EVENT_BEFORE_INSERT => ['create_time','update_time'],
                //修改活动记录时,自动设置update_time字段为当前时间戳
                ActiveRecord::EVENT_BEFORE_UPDATE => 'update_time',
            ],
            'value'      => function ($event) {
                return time();
            },
        ],
    ];
}

二、用内置行为TimeStampBehavior

public function behaviors()
{
    return [
        [
            'class'      => TimestampBehavior::className(),
            'createdAtAttribute' => 'create_time',
            'updatedAtAttribute' => 'update_time',
        ],
    ];
}

参考教程:晦涩de咚: Yii2.0的几大基本Behavior使用集合 [ 2.0 版本 ]

AR 优势
  • 评论于 2017-12-08 10:17 举报

    补充:

    1. 需要对哪一个AR活动记录实现自动时间戳的功能,就将上面的public function behaviors()添加到与数据库表对应的类文件(model)中。
    2. 上面的'create_time'对应数据库表中的创建时间字段名,'update_time'修改时间字段名,这两个字段均设置为int类型,11字节长度,用于存放对应的时间戳。
您需要登录后才可以评论。登录 | 立即注册