向架构构建器中的枚举类型字段添加默认值

Posted

技术标签:

【中文标题】向架构构建器中的枚举类型字段添加默认值【英文标题】:Add default value to enum type field in schema builder 【发布时间】:2015-04-17 07:05:02 【问题描述】:

我正在使用以下方法在架构生成器中创建ENUM 类型的数据库列:

$table->enum('status', array('new', 'active', 'disabled'));

我想将其默认值设置为active。 我试着这样做:

$table->enum('status', array('new', 'active', 'disabled'))->default('active');

但是你可以猜到它并没有设置它的默认值。如果这很重要,我正在使用 mysql 数据库。

【问题讨论】:

【参考方案1】:

使用这个:

$table->enum('status',['new', 'active', 'disabled'])->default('active');

【讨论】:

这对我有用。我正在使用 laravel 7.30.4 和 postgresql【参考方案2】:

我遇到了类似的问题,这对我有用:

$table->enum('status', array('active', 'new', 'disabled'));

将默认值作为数组中的第一个元素。 active 现在是默认值。

【讨论】:

【参考方案3】:

来自the MySQL manual:

如果声明一个 ENUM 列允许 NULL,则 NULL 值是该列的合法值,默认值为 NULL。如果 ENUM 列声明为 NOT NULL,则其默认值为允许值列表的第一个元素。

我假设这意味着您应该将'active' 设置为第一个值,删除default() 调用,并可能手动设置NULL 许可。

【讨论】:

谢谢,应该先检查一下手册,以为是 Laravel 的东西。限时让我接受。 干杯,很高兴它有帮助。 :) 您的意思是删除NULL 权限,而不是设置它,对吧? 答案是超过三年的@Adam,但我可能的意思是您可能必须明确设置是否允许为空。

以上是关于向架构构建器中的枚举类型字段添加默认值的主要内容,如果未能解决你的问题,请参考以下文章

第十五章 枚举类型和位标志

MybatisPlus 学习通用枚举

向枚举添加值时的 Semver

枚举类型

四.Protobuf3 缺省值

统计表中的项目,涉及的表字段枚举类型