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()ため、それらを設定するために使用することはできません。列をDATETIMENOW()として定義して 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 に答える