使用Postgres的Laravel 5.5迁移:
1)将字段定义为:
$table->enum('is_applied', ['Y', 'N']) ->comment('Y => is_applied, N=> Is not applied');
我在下面的生成表中看到了:
is_applied varchar(255) NOT NULL,
CONSTRAINT cs_tmp_csvps_is_applied_check CHECK (((is_applied)::text = ANY ((ARRAY['Y'::character varying, 'N'::character varying])::text[]))),
实际上我想得到我在Postgres中使用的sql类型:
CREATE TYPE type_cms_item_content_type AS ENUM (
'P',
'M',
'H'
);
content_type type_cms_item_content_type NOT NULL DEFAULT 'P'::type_cms_item_content_type,
有可能吗?
2)将字段定义为:
$table->timestamps();
我创建了2个字段created_at和updated_at。 因为我只需要创建created_at,我可以写:
$table->dateTime('created_at');
但是有一种方法可以在服务器上设置默认时间,例如:
created_at timestamp NOT NULL DEFAULT now(),
谢谢!
答案 0 :(得分:1)
你可以这样做:
$table->timestamp('created_at')->useCurrent();
表示时间戳问题。如果你真的想要更改sql,你总是可以在迁移中执行原始的sql语句:
Schema::table('content_type', function(Blueprint $table){
$sql = 'CREATE TYPE type_cms_item_content_type AS ENUM (
`P`,
`M`,
`H`
);
content_type type_cms_item_content_type NOT NULL DEFAULT `P`::type_cms_item_content_type';
DB::connection()->getPdo()->exec($sql);
});
答案 1 :(得分:1)
1)将字段定义为:
[RoutePrefix("companies")]
方法$table->enum('is_applied', ['Y', 'N']) ->comment('Y => is_applied, N=> Is not applied');
只适用于MySQL,在Laravel上迁移。
有关详情,请参阅:https://laravel.com/docs/5.5/migrations#creating-columns
2)将字段定义为:
@ alex-harris的答案是一个gob选项
comment()
有关详细信息,请参阅:https://laravel.com/docs/5.5/migrations#column-modifiers