假设我有一个名为“ foo”的表,其中包含数据,并且还包含外键。现在,我想在此表中创建一个名为“ description”的列。在没有重置或回滚的情况下如何迁移此表?因为如果我重置或回滚表,那么所有数据都会丢失。
根据docs,您只需要创建一个单独的迁移即可创建新列。
创建迁移
php artisan make:migration add_description_to_foo
然后只需设置要添加的详细信息即可进行迁移,例如:
Schema::table('foo', function ($table) {
$table->text('description');
});
Run Code Online (Sandbox Code Playgroud)
然后,您可以迁移它:
php artisan migrate
这将使您无需重新设置或回滚表即可添加列,从而防止丢失数据。
让我们从您的架构开始。你的表名是foo. 您想要description向foo表中添加一列而不丢失现有数据。您需要为此更改创建新的迁移。
php artisan make:migration add_columns_to_foo_table --table=foo
Run Code Online (Sandbox Code Playgroud)
将在您的迁移目录中创建一个新的迁移文件。打开它并像这样更改它:
Schema::table('foo', function ($table) {
$table->text('description');
});
Run Code Online (Sandbox Code Playgroud)
保存然后运行
php artisan migrate
Run Code Online (Sandbox Code Playgroud)
description将立即创建列,而不会丢失最后一列的旧数据。如果你想重新定位description列,你需要使用after(如果是 MySQL),如下所示:
Schema::table('foo', function ($table) {
$table->text('description')->after('another_column');
});
Run Code Online (Sandbox Code Playgroud)
希望你明白了。
您可以在这里找到更多详细信息:https ://laravel.com/docs/5.3/migrations#creating-columns
| 归档时间: |
|
| 查看次数: |
2105 次 |
| 最近记录: |