我有一个5.1.26 Laravel项目,其中一个模型有很多时间戳字段,它们都是通过使用类似的东西在迁移时创建的:
requests.__version__
在MySQL上,该字段的默认值为'0000-00-00 00:00:00'
效果很好,如果我想检查,如果一个项目没有被修复我通过做类似的事情检查默认值('0000-00-00 00:00:00'):
$table->timestamp('repaired_at');
As Carbon将'0000-00-00 00:00:00'改为“-0001-11-30 00:00:00”
问题是我还没有想办法将时间戳字段设置为默认值'0000-00-00 00:00:00'
我需要找出一种方法,如果已经设置了日期......并且能够将日期重置为默认值(不是设定值)...我想继续使用雄辩,所以我可以简单地做一些事情:
if (starts_with($item->repaired_at,"-0001")) {
// Date Have not been set
} else {
// Date have been set
}
我感谢任何帮助......
答案 0 :(得分:1)
不是依赖于否定日期,而是使特定字段为空,并检查该字段是否为空。
这是您的新迁移的样子。
Schema::table('table_name', function(Blueprint $table) {
$table->timestamp('repaired_at')->nullable()->change();
});
答案 1 :(得分:0)
您可以尝试:
$item->repaired_at->year < 1
或
$item->repaired_at->lt(Carbon\Carbon::minValue())
但正如@chris所说,这是在数据库中设置nullable
的最佳方法。