Laravel migrate:回滚添加和删除表列

时间:2014-11-05 15:24:16

标签: php laravel laravel-4 migration database-migration

我使用了php artisan migrate:make add_something_to_to_user_table --table=users

并编码

Schema::table('users', function(Blueprint $table)
    {
        $table->string('description1');
        $table->string('description2');
        $table->string('description3');
    });

并添加了三个字段并提供了php artisan migrate,并将字段存储到数据库中

还发现migration table已使用行2014_11_05_145536_add_something_to_to_user_table

进行更新

现在当我使用php artisan migrate:rollback

迁移表中的2014_11_05_145536_add_something_to_to_user_table行缺失,但添加到用户表的列保持不变

为什么不删除表格中的字段,这会在再次使用php artisan migrate时导致错误...

3 个答案:

答案 0 :(得分:10)

您应该在迁移中使用down()方法,如下所示:

public function down()
{
    Schema::table('users', function($table)
    {
        $table->dropColumn(array('description1', 'description2', 'description3'));
    });
}

将在回滚时调用它,并将负责删除迁移添加的列。

答案 1 :(得分:1)

根据laravel 7+文档,当您需要同时删除多列时,这也将起作用。

public function down(){
    Schema::table('users', function (Blueprint $table) {
     $table->dropColumn(['description1', 'description2', 'description3']);
   });
}

答案 2 :(得分:-1)

  

添加向下公共功能,以便在回滚时删除用户表。

public function down()
{
    Schema::drop('users');
}