Laravel,Carbon和Timestamp,如何设置默认值?

时间:2016-11-11 04:10:26

标签: php mysql laravel timestamp php-carbon

我有一个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
}

我感谢任何帮助......

2 个答案:

答案 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的最佳方法。