Laravel: 将日期时间到现在的时间戳设置为 int
Laravel: set timestamps from datetime to now as int
我正在创建一个 Laravel 应用程序。早些时候,我曾经使用 created_at 和 updated_at 的 datetime 数据类型设计数据库,但我的一个朋友建议我应该使用 timestamp 而不是 datetime,因为它适用于不同的时区。
使用时间戳而不是日期时间格式是个好主意吗?会不会有任何性能问题?如果 "No" 那么我们如何在 laravel 应用程序中全局将时间戳的默认格式从日期时间更改为时间戳。
例如(默认):
$model->created_at = "yyyy-mm-dd h:i-s";
$model->updated_at = "yyyy-mm-dd h:i-s";
整数时间戳:
$model->created_at = 1523246567;
$model->updated_at = 1523246567;
很遗憾,我无法回答您的前两个问题,但是 Laravel 确实提供了一种更改日期存储格式的简单方法。
Date Mutators 文档说可以像这样在您的模型上设置 $dateFormat
属性:
/**
* The storage format of the model's date columns.
*
* @var string
*/
protected $dateFormat = 'U';
'U'
格式为 "Seconds since the Unix Epoch." php date documentation 中提供了更多格式。
您还需要更改模型的迁移。将 $table->timestamps();
替换为 $table->unsignedInteger('created_at');
和 $table->unsignedInteger('updated_at');
.
要使用特定的日期格式 "globally",即对于所有模型,您可以在基础模型上设置日期格式并让所有模型继承该模型,或者使用特征。有关示例,请参见 。
我正在创建一个 Laravel 应用程序。早些时候,我曾经使用 created_at 和 updated_at 的 datetime 数据类型设计数据库,但我的一个朋友建议我应该使用 timestamp 而不是 datetime,因为它适用于不同的时区。
使用时间戳而不是日期时间格式是个好主意吗?会不会有任何性能问题?如果 "No" 那么我们如何在 laravel 应用程序中全局将时间戳的默认格式从日期时间更改为时间戳。
例如(默认):
$model->created_at = "yyyy-mm-dd h:i-s";
$model->updated_at = "yyyy-mm-dd h:i-s";
整数时间戳:
$model->created_at = 1523246567;
$model->updated_at = 1523246567;
很遗憾,我无法回答您的前两个问题,但是 Laravel 确实提供了一种更改日期存储格式的简单方法。
Date Mutators 文档说可以像这样在您的模型上设置 $dateFormat
属性:
/**
* The storage format of the model's date columns.
*
* @var string
*/
protected $dateFormat = 'U';
'U'
格式为 "Seconds since the Unix Epoch." php date documentation 中提供了更多格式。
您还需要更改模型的迁移。将 $table->timestamps();
替换为 $table->unsignedInteger('created_at');
和 $table->unsignedInteger('updated_at');
.
要使用特定的日期格式 "globally",即对于所有模型,您可以在基础模型上设置日期格式并让所有模型继承该模型,或者使用特征。有关示例,请参见