2013-05-14 108 views
1
public function up(){ 

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

這是遷移的最新功能。正如你看到它是查詢創建新表。默認情況下,YII爲timestamp列創建等於CURRENT_TIMESTAMP的默認值,並創建附加參數並將其設置爲ON UPDATE CURRENT_TIMESTAMP。YII遷移和表列默認值

我不需要時間戳的當前值,我不需要在更新行上更新此列。我必須做什麼?順便說一句,U使用MySQL

回答

1

槓桿斷了MySQL創建表腳本:

show create table tablename 

其中給出:

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

現在將其添加到遷移:

'timestamp' => 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP' 
-1

你必須設置其他默認值,空例如

​​
+0

它不是空列。但問題是如果默認值設置爲current_timestamp(這不是一個問題,因爲無論如何我會設置一個需要的值),那麼ON UPDATE值也被設置。我不希望在updatind行上修改該值 – 2013-05-14 09:14:15

+0

我不明白你的情況比對不起 – Agrest 2013-05-14 11:26:50

1

對於像我這樣的谷歌用戶:Yii2現在擁有它out of the box

現在,您可以添加->defaultExpression('CURRENT_TIMESTAMP')到您的定義。