生产迁移新鲜

Production migration fresh

如果我想在我的产品中添加一个新列,它是如何工作的 table?我知道当我制作 migration:fresh.

时我会丢失所有数据

1) 是否可以像我对 fastnetnr 列那样更改迁移并添加一个新列?

 public function up()
    {
        Schema::create('kontaktforms', function (Blueprint $table) {
            $table->increments('id');
            $table->string('navn');
            $table->string('mobilnr');
            //new fastnetnr column added
            $table->string('fastnetnr')->nullable();
            $table->string('mail');
            $table->string('emne');
            $table->text('beskrivelse');
            $table->timestamps();
        });

2) 还是我必须添加一个带有 php artisan 的新列以便输出是这样的?

public function up()
{
    Schema::table('kontaktforms', function($table) {
        $table->string('fastnetnr')->nullable();
    });
}

逻辑上您可以按照以下步骤完成;

  1. 回滚你的 table php artisan migrate:rollbackphp artisan migrate:rollback --step=1
  2. 编辑您的迁移文件
  3. 迁移回来php artisan migrate

但这不是最佳实践,尤其是在生产中。所以你必须为修改创建新的迁移文件 table 并迁移它。

创建新的迁移文件

php artisan make:migration add_fastnetnr_to_kontaktforms_table --table=kontaktforms

并像这样添加新列

public function up()
{
    Schema::table('kontaktforms', function (Blueprint $table) {
        $table->string('fastnetnr')->nullable();
    });
}


public function down()
{
    Schema::table('kontaktforms', function (Blueprint $table) {
        $table->dropColumn('fastnetnr');
    });
}

并迁移

php artisan migrate