2017-01-03 20 views
0

我有一個像這樣定義的遷移:正確的方法,使上下遷移使列可空類型

Schema::table('campaigns', function (Blueprint $table) { 
    $table->string('rates')->nullable(true)->change(); 
}); 

所以我做「率」爲空。

我應該如何處理反向遷移?如果該列中沒有數據,我只需設置默認值?我不能讓它不爲null,因爲這會違反完整性約束。我可以不做任何事嗎?

+1

我的方法是在這種情況下不寫入反向遷移。我只在有意義的地方編寫反向遷移(刪除表格並刪除/添加會破壞先前遷移的列)。在你的情況下,問題是添加默認值並不能真正逆轉遷移,它只是再次更改結構1次。 – devk

+0

是的,我想的很多。只是想知道是否有人有更好的想法。感謝您的輸入。 –

回答

0

更新:

對不起,我的反應慢。也許你可以嘗試這樣。 我現在做這件事不好,但是如果你的項目仍在開發中,那沒關係。

public function down() 
{ 
    Schema::table('campaigns', function (Blueprint $table) { 
     $table->dropColumn('rates'); 
    }); 

    Schema::table('campaigns', function (Blueprint $table) { 
     $table->string('rates')->nullable(); 
    }); 
} 

希望這種幫助和抱歉,我的英語不好。

+0

謝謝,但這不是我問的。如果並且行列「rates」爲空,則由於違反了NOT NULL約束,運行該向下遷移將失敗。不確定MySQL,但肯定在Postgres中。 –

相關問題