5
public function up(){

        $this->createTable('POST', array(
            'id' => 'pk',
            'isremoved' => 'integer NOT NULL',
            'removaldate' => 'timestamp NULL',
            'post' => 'text NOT NULL',
            'creationdate' => 'timestamp NOT NULL',
        ));
}

这是迁移的 up 函数。如您所见,它是用于创建新表的查询。默认情况下,YII 为时间戳列创建等于 CURRENT_TIMESTAMP 的默认值,并创建附加参数并将其设置为等于 ON UPDATE CURRENT_TIMESTAMP。

我不需要时间戳的当前值,也不需要在更新行时更新此列。我必须做什么?顺便说一句,你使用 MySQL

4

3 回答 3

6

对于像我这样的谷歌用户:Yii2 现在开箱即用

现在您可以添加->defaultExpression('CURRENT_TIMESTAMP')到您的定义中。

于 2016-01-13T16:50:47.243 回答
1

利用 MySQL 创建表脚本:

show create table tablename

这使:

CREATE TABLE `tablename` (
....
....
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
...

现在将其添加到迁移中:

'timestamp' => 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP'
于 2015-03-28T20:19:10.600 回答
-1

您必须设置其他默认值,例如 null

public function up(){

        $this->createTable('POST', array(
            'id' => 'pk',
            'isremoved' => 'integer NOT NULL',
            'removaldate' => 'timestamp DEFAULT NULL',
            'post' => 'text NOT NULL',
            'creationdate' => 'timestamp DEFAULT NULL',
        ));
}
于 2013-05-14T08:15:48.750 回答