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