laravel中迁移中的每一个up()都需要写down()吗?

Is it necessary to write down() for every up() in migration in laravel?

class UpdateSessions extends Migration {

    public function up()
    {
            Schema::table('sessions', function($table){
                $table->string('comCode')->nullable()->change();
            });
    }

    public function down()
    {
         // What should i write here?
    }

}

我已经创建了一个会话 table 正在编写迁移以将列更改为可为空。 现在我很困惑我应该写些什么?

在迁移的 down 方法中,撤消在 up 方法中所做的更改。当您使用 artisan migrate:rollback 命令回滚迁移时调用此方法。在您的情况下,它看起来像这样:

public function down()
{
    // Laravel doesn't have a method to undo ->nullable()
    // so you have to do use a raw query in this case
    DB::statement('ALTER TABLE sessions MODIFY comCode VARCHAR(255) NOT NULL');
}

因此,如果在您的迁移 up 中您将名为 comCode 的列修改为可为空,则在回滚迁移时您需要更新该列定义以使其不为空,并且这就是您在 down 方法中所做的。

无需在 down 方法中添加任何内容即可成功迁移到 运行,但是一旦迁移到 运行,您将无法滚动除非您在 down 方法中有正确的代码。

截至 2015 年 12 月,至少 Laravel 5 你可以只写

Schema::table('sessions', function($table){
    $table->string('comCode')->change();
});

注:本次没有nullable()