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",即对于所有模型,您可以在基础模型上设置日期格式并让所有模型继承该模型,或者使用特征。有关示例,请参见