Как отключить проверку Enum в Laravel - PullRequest
0 голосов
/ 02 февраля 2019

Я хочу добавить еще один новый столбец перечисления в таблицу, но не могу перенести, так как он говорит, что столбец уже существует.

Миграция

class DesignationColumnNullableInUserTable extends Migration
{
    public function __construct()
    {
        \Illuminate\Support\Facades\DB::getDoctrineSchemaManager()
        ->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
        Type::addType('enum', \Doctrine\DBAL\Types\StringType::class);
    }

    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->enum('designation', ['Lawyer', 'Freelancer', 
                'Corporate secretary', 'Immigration Consultant'])
             ->nullable()->change();
        });
    }

    public function down()
    {
        Schema::table('user', function (Blueprint $table) {
            $table->dropIfExists('designation');
        });
    }
} 

Я также сделал некоторые изменения в другой миграции с внешним ключом.

\Illuminate\Support\Facades\DB::getDoctrineSchemaManager()
    ->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');

Как я могу исправить эту проблему для проверки перечисления?

1 Ответ

0 голосов
/ 02 февраля 2019

Laravel не поддерживает изменение столбцов перечисления, поэтому вместо этого используйте необработанный оператор:

public function up() {
    DB::statement("ALTER TABLE users MODIFY COLUMN designation ENUM('Lawyer', 'Freelancer', 'Corporate secretary', 'Immigration Consultant')");
}

Для MySQL вы должны иметь возможность использовать следующее:

// up
DB::statement("ALTER TABLE users CHANGE designation designation ENUM('Lawyer', 'Freelancer', 'Corporate secretary', 'Immigration Consultant')");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...