Laravel 5迁移更改现有列的长度

时间:2016-04-07 07:30:44

标签: laravel

它不起作用,我搜索了很多方法,如何在laravel 5中更改值的长度

public function up()
{
    Schema::table('articles', function (Blueprint $table) {
        $table->string('name',50)->change();
    });
}

谢谢大家的阅读!

3 个答案:

答案 0 :(得分:27)

关于documentation,您的示例应该有效:

Schema::table('users', function ($table) {
    $table->string('name', 50)->change();
});

只需运行php artisan migrate命令即可​​执行它。

答案 1 :(得分:1)

存在一个与教义DBAL相关的悬而未决的问题(开放多年,还在讨论中)(在这里讨论:https://github.com/laravel/framework/issues/1186)。

此问题的欺骗性在于,如果任何列的类型为enum(而不仅仅是您要更改的列!),->change()都会失败

如果表中有一个enum列,则需要还原为使用alter语句(请注意,您无需将其包装在Table::schema中:

DB::statement('ALTER TABLE users MODIFY COLUMN name VARCHAR(50)')

答案 2 :(得分:0)

至少在Laravel 5.6中,如果它需要Doctrine DBAL,并且由于某种原因您现在不想安装它,则可以尝试以下方法:

<?php

// ...

Schema::table('users', function ($table) {
    DB::statement('ALTER TABLE users MODIFY COLUMN name VARCHAR(50)');
});