2016-11-07 138 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