Laravel 5.3 Схема:: создать ENUM поле VARCHAR

Я только что создал новую миграцию. После запуска я вижу свое поле type не тип ENUM. Вместо этого он имеет тип VARCHAR(255)

Schema::create('payments', function (Blueprint $table) {
          $table->increments('id');
          $table->text('response');
          $table->enum('type', ['apple', 'paypal']);
          $table->smallInteger('flags');
          $table->timestamps();

        });

Может кто-нибудь сказать мне, в чем может быть причина. Я что-то упустил, я пытался несколько раз - получить тот же результат.

Я использую PostgreSQL 9.5.4

1 ответ

Решение

Из исходного кода Laravel

protected function typeEnum(Fluent $column)
{
    $allowed = array_map(function ($a) {
        return "'{$a}'";
    }, $column->allowed);
    return "varchar(255) check (\"{$column->name}\" in (".implode(', ', $allowed).'))';
}

Это создаст varchar(255) столбец и добавит ограничение, чтобы разрешить только указанные строки.

Другие вопросы по тегам