Laravel迁移,列类型YEAR

3
我需要一个列来存储年份。目前我正在使用:

Original Answer

,请问有更好的方法吗?
$table->unsignedInteger('year')->default('1900');

但是,这允许像519这样的数字。我想强制使用四位数,例如1992
有什么建议吗?
最初的回答:但是,这可以通过在输入字段中设置minlength="4"来解决。这将强制用户输入至少四个字符,因此只有四位数才能被接受。
3个回答

10
在 Laravel 文档中,您可以在数据库迁移文件中执行此操作。
$table->year('year');   

好的,我将其设置为“年”类型,但问题仍然存在。它仍然接收到“5”或“19”。 - Gjaa
你刷新了迁移吗? - ahmed galal
尝试将默认值设为2000并检查,你说不起作用后我尝试了一下,但它确实起作用了。 - ahmed galal
我将默认值设置为2000,但仍然没有改变。列类型“year”本身并没有错误,因为“5”或“19”年是有效的年份。我想我想要的是将最小年份设置为“1000”,这样它就不会接收低于该值的值。 - Gjaa

1
您最简单的解决方案是将字段保存为日期,使用Carbon。然后将日期和月份值设置为01,并获取完整的年份值,这样您就可以使用 $date->year 获取完整的年份。

1
你可以使用:

$table->integer('year', 4);

记住使用:如果你想要一条命令实现回滚和迁移

php artisan migrate:refresh

或者删除所有表格并迁移。
php artisan migrate:fresh

我尝试过了,但在迁移时出现了多个主键错误:\ - Gjaa
所以,请尝试使用“php artisan migrate:fresh”。 - rpalencia
我已经尝试过了,但结果还是一样。我想我会将其设置为“年”类型,并在代码中验证输入。 - Gjaa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接