Laravel,Carbon和Timestamp,如何设置默认值?
Laravel, Carbon and Timestamp, how to set default value?
我有一个 5.1.26 Laravel 项目,其中一个模型有很多时间戳字段,它们都是在迁移时使用类似以下内容创建的:
$table->timestamp('repaired_at');
在 MySQL 字段获得默认值 '0000-00-00 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
}
因为 Carbon 将“0000-00-00 00:00:00”转换为“-0001-11-30 00:00:00”
问题是我还没有找到一种方法来将时间戳字段设置为其默认值“0000-00-00 00:00:00”
我需要想办法确定日期是否已设置...并且能够将日期重置为默认值(未设置值)...我想继续使用 eloquent 所以我可以简单地做类似的事情:
$item->returned_at = DEFAULT_VALUE;
感谢任何帮助....
不要依赖负日期,而是使特定字段可为空并检查该字段是否为空。
这就是您的新迁移的样子。
Schema::table('table_name', function(Blueprint $table) {
$table->timestamp('repaired_at')->nullable()->change();
});
你可以试试:
$item->repaired_at->year < 1
或
$item->repaired_at->lt(Carbon\Carbon::minValue())
但正如@chris 所说,这是在您的数据库中设置它 nullable
的最佳方法。
我有一个 5.1.26 Laravel 项目,其中一个模型有很多时间戳字段,它们都是在迁移时使用类似以下内容创建的:
$table->timestamp('repaired_at');
在 MySQL 字段获得默认值 '0000-00-00 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
}
因为 Carbon 将“0000-00-00 00:00:00”转换为“-0001-11-30 00:00:00”
问题是我还没有找到一种方法来将时间戳字段设置为其默认值“0000-00-00 00:00:00”
我需要想办法确定日期是否已设置...并且能够将日期重置为默认值(未设置值)...我想继续使用 eloquent 所以我可以简单地做类似的事情:
$item->returned_at = DEFAULT_VALUE;
感谢任何帮助....
不要依赖负日期,而是使特定字段可为空并检查该字段是否为空。
这就是您的新迁移的样子。
Schema::table('table_name', function(Blueprint $table) {
$table->timestamp('repaired_at')->nullable()->change();
});
你可以试试:
$item->repaired_at->year < 1
或
$item->repaired_at->lt(Carbon\Carbon::minValue())
但正如@chris 所说,这是在您的数据库中设置它 nullable
的最佳方法。