1
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?
    }

}

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

4

2 回答 2

1

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-02-26T09:41:26.037 回答
0

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

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

注意:这次没有nullable()

于 2015-12-09T18:38:38.917 回答