向架构构建器中的枚举类型字段添加默认值
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,但我可能的意思是您可能必须明确设置是否允许为空。以上是关于向架构构建器中的枚举类型字段添加默认值的主要内容,如果未能解决你的问题,请参考以下文章