修改字段时表里有enum字段laravel就会报这个错

laravel5.1文档中提到:

Note: Renaming columns in a table with a enum column is not currently supported.

注意:目前不支持使用枚举列重命名表中的列。

It happens when you have a enum column in your database table. Whether you are trying to rename another column, or change another column to nullable, this bug will appear. It's an issue with Doctrine\DBAL.

当您在数据库表中有一个枚举列时会发生这种情况。无论您是要重命名另一列,还是将另一列更改为可为空,都会出现此错误。这是Doctrine \ DBAL的一个问题。

An easy fix for this is to just add this constructor method in your database migration file.

一个简单的解决方法是在数据库迁移文件中添加此构造函数方法。

public function __construct()
{
    DB::getDoctrineSchemaManager()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
}

This will map all the ENUM columns to VARCHAR(), and the column will accept any string.

这会将所有ENUM列映射到VARCHAR(),该列将接受任何字符串。

我在网上找到的办法是在

Schema::getConnection()->getDoctrineSchemaManager()->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
Schema::table('users', function (Blueprint $table) {
$table->string('phone')->nullable()->unique()->after('name');
$table->string('email')->nullable()->change();
});

它之前加上声明这样就可以执行成功了,不过以后要修改该表都要加上这个。