2016-11-07 82 views
0

假設我有一個名爲「foo」的數據表,並且還包含外鍵。現在我想在這個表格中創建一個名爲「description」的列。沒有重置或回滾如何遷移此表?因爲如果我重置或回滾表,那麼所有數據都將丟失。如何在laravel數據庫中創建列而不丟失數據

+0

我已經回答了完全相同的問題,幾個小時前,請檢查:http://stackoverflow.com/questions/40458055/laravel-rename-coloumn-loss - 所有數據 –

回答

1

根據docs,您只需創建一個單獨的遷移來創建新列。

創建遷移

php artisan make:migration add_description_to_foo

然後,只需設置遷移了您要添加的細節,如:

Schema::table('foo', function ($table) { 
    $table->text('description'); 
}); 

然後,你可以進行遷移:

php artisan migrate

這將允許您添加一列而不重置或回滾表格,從而防止丟失數據。

1

讓我們從您的模式開始。你的表名是foo。您希望在您的foo表格中添加description列,而不會丟失現有數據。您需要爲此更改創建新的遷移。

php artian make:migration add_columns_to_foo_table --table=foo 

新遷移文件將在您的遷移目錄中創建。打開它,改變它像這樣:

Schema::table('foo', function ($table) { 
    $table->text('description'); 
}); 

保存它,然後運行

php artisan migrate 

description欄會立即而不會丟失舊的數據作爲最後一列被創建。如果要重新定位你的description列,您需要使用after(在MySQL的情況下)是這樣的:

Schema::table('foo', function ($table) { 
     $table->text('description')->after('another_column'); 
}); 

希望你得到它。

您將在這裏找到更多的細節:https://laravel.com/docs/5.3/migrations#creating-columns