2014-11-05 123 views
1

我已經使用了php artisan migrate:make add_something_to_to_user_table --table=usersLaravel遷移:回滾添加和刪除表中的列

和編碼

Schema::table('users', function(Blueprint $table) 
    { 
     $table->string('description1'); 
     $table->string('description2'); 
     $table->string('description3'); 
    }); 

,並增加了三個領域,並給php artisan migrate和領域得到了保存到數據庫

還發現migration table更新與行2014_11_05_145536_add_something_to_to_user_table

現在當我使用php artisan migrate:rollback

2014_11_05_145536_add_something_to_to_user_table行中的遷移表丟失,但列添加到用戶表保持不變

爲什麼它沒有在使用上表中的導致錯誤刪除場php artisan migrate再次...

+0

你有沒有正確設置了'向下()'在遷移類的方法? – Bogdan 2014-11-05 15:25:28

回答

9

你應該有你遷移down()方法看起來應該像這樣的:

public function down() 
{ 
    Schema::table('users', function($table) 
    { 
     $table->dropColumn(array('description1', 'description2', 'description3')); 
    }); 
} 

這將在回滾時調用,並負責刪除由遷移添加的列。

+0

我是否也必須在同一個文件中的'down()'中的'up()'函數中提及所有列? – Ronser 2014-11-05 15:33:38

+0

是的,他們應該在同一個文件中。在遷移類中,「up」方法將應用更改,「down」方法將撤消它們。 – Bogdan 2014-11-05 15:34:45

+2

請記住,如果您已經運行了'artisan migrate:rollback'命令,並且沒有'down'方法設置,那麼您必須在重新運行遷移之前手動刪除列(這就是爲什麼在嘗試遷移時遇到錯誤調用'migrate',因爲它試圖在已經存在的時候添加3列)。 – Bogdan 2014-11-05 15:37:18

-1

添加下來公共功能減退用戶表時回滾..

public function down() 
{ 
    Schema::drop('users'); 
}