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)
столбец и добавит ограничение, чтобы разрешить только указанные строки.