删除然后在当前向上迁移功能中创建相同的列

Mil*_*iez 2 migration laravel laravel-4

Schema::table('users', function (Blueprint $table) {
            $table->dropTimestamps();
            $table->dropColumn(['email', 'bio']);

            $table->string('email', 20)->unique()->after('id');
            $table->string('bio', 150)->after('surname');
            $table->timestamps();
        });
Run Code Online (Sandbox Code Playgroud)

这就是我现在所拥有的.所以,我的表中存在atm列,但我想修改并重新排列它们.但是当我运行迁移时,我得到email列存在的SQL错误.我可能会获得的同样的错误bio,并timestamps为好.我有点理解为什么会这样,所以我要问的只是一个解决方法.

是否有可能在一次迁移中制作我想要的内容,或者我必须创建一个用于删除列的迁移,然后单独迁移以按照我想要的方式创建它们?

Lau*_*nce 8

只需将模式分解为两个调用即可

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropTimestamps();
        $table->dropColumn(['email', 'bio']);
    });

    Schema::table('users', function (Blueprint $table) {
        $table->string('email', 20)->unique()->after('id');
        $table->string('bio', 150)->after('surname');
        $table->timestamps();
    });
}
Run Code Online (Sandbox Code Playgroud)

这样,在一次迁移中发生了两次数据库调用.

  • @Oranges13 - 问题的标题是“删除然后创建列” - 所以这正是OP所要求的。 (2认同)