2

我刚刚创建了新的迁移。运行后,我看到我的字段type不是ENUM类型。它有一个VARCHAR(255)类型,而不是Laravel 5.3 Schema :: create ENUM字段是VARCHAR

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

回答

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)列,使其只允许指定的字符串将添加一个约束。

+0

如何用DB :: statement()修改? – envision