gpt4 book ai didi

laravel - laravel 中的迁移中是否有必要为每个 up() 都写 down() ?

转载 作者:行者123 更新时间:2023-12-03 09:22:00 24 4
gpt4 key购买 nike

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

}

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

最佳答案

在迁移的 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 的列修改为可为空,则在回滚迁移时,您需要更新该列定义以使其可以为空。 not null,这就是您在 down 方法中所做的事情。

为了使迁移成功运行,down 方法中不需要包含任何内容,但是一旦迁移运行,您将无法将其回滚,除非您有正确的配置down 方法中的代码。

关于laravel - laravel 中的迁移中是否有必要为每个 up() 都写 down() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28738684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com