1

所以我使用 Yii 2.0 TimestampBehavior 但它显示错误的日期,创建日期始终是 01/01/1970 03:33 和更新日期 01/01/1970 03:00

public function behaviors()
{
return [
    'timestamp' => [
        'class' => TimestampBehavior::className(),
        'attributes' => [
            ActiveRecord::EVENT_BEFORE_INSERT => 'create_time',
            ActiveRecord::EVENT_BEFORE_UPDATE => 'update_time',
        ],
        'value' => new Expression('NOW()'),
    ],
];
}

SQL 模式定义是

'id' => 'INT PRIMARY KEY AUTO_INCREMENT',
'title' => 'VARCHAR(255)',
'data' => 'TEXT',
'create_time' => 'INT',
'update_time' => 'INT'
4

1 回答 1

2

如果将日期列定义为 INT,则不能用于NOW()设置它们,因为NOW()返回“日期”类型的值。您可以将列定义为DATETIME并保持 PHP 代码不变,或者使用 PHP 函数time()获取日期值。这是默认行为,所以不要在行为配置中指定“值”:

'timestamp' => [
    'class' => \yii\behaviors\TimestampBehavior::className(),
    'attributes' => [
        ActiveRecord::EVENT_BEFORE_INSERT => 'create_time',
        ActiveRecord::EVENT_BEFORE_UPDATE => 'update_time',
    ],
],
于 2014-05-11T20:16:36.587 回答