生产迁移新鲜

时间:2018-12-04 10:20:17

标签: php database-migration laravel-5.6

如果要在生产表中添加新列,它如何工作?我知道在进行迁移时会丢失所有数据:新。

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 个答案:

答案 0 :(得分:1)

从逻辑上讲,您可以按照以下步骤操作;

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

但这不是最佳实践,尤其是在生产中。因此您必须创建新的迁移文件以修改表并进行迁移。

创建新的迁移文件

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
相关问题