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()
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()