如何更改数据类型并使用迁移添加列而不会丢失数据? (laravel 5.3)

时间:2016-12-19 04:48:54

标签: php mysql laravel laravel-5.3

我的迁移是这样的:

public function up()
{
    Schema::create('tests', function (Blueprint $table) {
        $table->increments('id_test');
        $table->string('name', 50);
        $table->timestamps();
        $table->softDeletes();
    });
}

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

我想更改数据类型并在表格测试中添加列。然后更新数据库中的表。我这样编辑:

public function up()
{
    Schema::create('tests', function (Blueprint $table) {
        $table->increments('id');
        $table->string('id_test', 18);
        $table->string('name', 50);
        $table->timestamps();
        $table->softDeletes();
    });
}

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

然后我跑:php artisan migrate:refresh

我丢失了数据库中的数据

有没有人可以帮助我?

1 个答案:

答案 0 :(得分:2)

使用以下命令创建新的迁移文件:

php artisan make:migration name_of_your_file

它的功能应该是这样的

    public function up()
        {
            Schema::table('tests', function($table) {
                  $table->renameColumn('id_test', 'id');
                  $table->string('id_test', 18);
            });
        }


   public function down()
        {
            Schema::table('tests', function($table) {
                 $table->dropColumn('id_test');
            });
        }

现在只需运行命令

php artisan migrate

注意:不要使用refresh删除数据

要了解有关Laravel Migration的更多信息,请参阅:https://laravel.com/docs/5.3/migrations#modifying-columns