如何在laravel数据库中创建列而不会丢失数据

时间:2016-11-07 11:13:38

标签: laravel

假设我有一个名为“foo”的表,其中包含数据并且还包含外键。现在我想在此表中创建一个名为“description”的列。没有重置或回滚如何迁移这个表?因为如果我重置或回滚表格,那么所有数据都将丢失。

2 个答案:

答案 0 :(得分:3)

根据docs,您只需创建单独的迁移即可创建新列。

创建迁移

php artisan make:migration add_description_to_foo

然后只需使用您要添加的详细信息设置迁移,例如:

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

然后你可以迁移它:

php artisan migrate

这样您就可以在不重置或回滚表格的情况下添加列,从而防止丢失数据。

答案 1 :(得分:2)

让我们从您的架构开始。您的表名是foo。您希望在description表中添加foo列,而不会丢失现有数据。您需要为此更改创建新的迁移。

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