Laravel 5.3 Schema :: create ENUM字段是VARCHAR

时间:2016-11-02 16:20:01

标签: postgresql laravel eloquent laravel-5.3 laravel-schema-builder

我刚创建了新的迁移。运行后,我看到我的字段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 个答案:

答案 0 :(得分:4)

来自Laravel source code

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)列并添加一个约束,以便它只允许指定的字符串。