在Laravel 5.1中更新表结构而不回滚

par*_*oid 1 php mysql migrate rollback laravel-5.1

我是Laravel的初学者.我使用migrate在数据库中创建表,但我不想migrate:rollback更新我的表.

我想在旧数据库中应用更改而不会丢失当前数据.

旧迁移

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password', 60);
        $table->rememberToken();
        $table->timestamps();
    });
}
Run Code Online (Sandbox Code Playgroud)

新迁移

   public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('family');
        $table->string('email')->unique();
        $table->string('password', 60);
        $table->rememberToken();
        $table->timestamps();
    });
}
Run Code Online (Sandbox Code Playgroud)

svr*_*rnm 6

据我所知,这是不可能的,也不是迁移的意图.我认为有两种方法可以解决这个问题:

  1. 如果您尚未投入生产,则可以更改迁移脚本并使用mysql手动添加其他列:

    alter table users add column family varchar(255);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果需要更新高效数据库,则应添加第二个迁移脚本,仅添加其他列,例如:

    public function up()
    {
        Schema::table('users', function(Blueprint $table)
        {
            $table->string('family')->after('user_id');
        });
    }
    
    public function down()
    {
        Schema::table('users', function(Blueprint $table)
        {
            $table->dropColumn('family');
        });
    }
    
    Run Code Online (Sandbox Code Playgroud)