如何回滚已更改的列

时间:2015-08-11 08:06:32

标签: php migration laravel-5.1

我想生成以下SQL查询,

ALTER TABLE `api`.`users` CHANGE COLUMN `id` `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ;

Laravel 5中引入了另一个抽象层,change,之后您可以像这样编码,

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        //DB::statement("ALTER TABLE `api`.`users`
        //    CHANGE COLUMN `id` `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ;");
        $table->increments('id')->unsigned()->change();
    });
}

撤消更改的方法是什么,我该如何撰写down()

未成功我尝试了以下内容。

public function down()
{
    //DB::statement("ALTER TABLE `api`.`users`
    //    CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT ;");
    $table->increments('id')->change();
}

---编辑---

我正在使用包含实时数据的现有表(实际上是我本地环境中的副本)。所以我担心放下一列不是我的选择。

1 个答案:

答案 0 :(得分:0)

您可以删除该列并重新添加。因为它自动递增所有现有行应该保持相同的ID。

FieldError

但请不要忘记,使用增量会自动为您添加public function down() { $table->dropColumn('id'); $table->increments('id'); } ,并且所有密钥都应该是无符号的,包括任何外键列。