它不起作用,我搜索了很多方法,如何在laravel 5中更改值的长度
public function up()
{
Schema::table('articles', function (Blueprint $table) {
$table->string('name',50)->change();
});
}
谢谢大家的阅读!
答案 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)');
});