如何覆盖Yii2 TimestampBehavior?

时间:2016-10-26 06:12:59

标签: yii2

所以我在我的模型中有这个功能。

public function behaviors() {

    return [
        TimestampBehavior::className(),
    ];
}

created_atupdated_at按预期工作。

但每当数据更新时,我都需要在updated_at传递一段时间。

我该怎么做?似乎无法找到任何资源。

2 个答案:

答案 0 :(得分:0)

public function behaviors() {
    return [
        'timestamp' => [
            'class' => 'yii\behaviors\TimestampBehavior',
            'attributes' => [
                ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],
                ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'],
            ],
            'value' => time(),
        ],
    ];
}

如果您的模型文件具有created_dateupdated_date用于存储时间戳 并为created_dateupdated_date设置规则不是必需的。

答案 1 :(得分:-1)

只需使用preserveNonEmptyValues属性(自2.0.13版开始可用):

public function behaviors() {
    return [
        [
            'class' => TimestampBehavior::className(),
            'preserveNonEmptyValues' => true,
        ]
    ];
}