【问题标题】:Laravel: set timestamps from datetime to now as intLaravel:将日期时间到现在的时间戳设置为 int
【发布时间】:2019-07-18 14:32:28
【问题描述】:

我正在创建一个 Laravel 应用程序。早些时候,我曾经使用 created_at 和 updated_at 的 datetime 数据类型来设计数据库,但我的一个朋友建议我应该使用时间戳而不是 datetime,因为它适用于不同的时区。

使用时间戳而不是日期时间格式是个好主意吗?会不会有性能问题?如果“否”,那么我们如何在 laravel 应用程序中将时间戳的默认格式从 datetime 更改为全局时间戳。

例如(默认):

$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 timestamp default unix-timestamp


    【解决方案1】:

    很遗憾,我无法回答您的前两个问题,但 Laravel 确实提供了一种简单的方法来更改您的日期存储格式。

    Date Mutators 文档说可以像这样在模型上设置$dateFormat 属性:

    /**
     * The storage format of the model's date columns.
     *
     * @var string
     */
    protected $dateFormat = 'U';
    

    'U' 格式将是“自 Unix 纪元以来的秒数”。 php date documentation 提供更多格式。

    您还需要更改模型的迁移。将$table->timestamps(); 替换为$table->unsignedInteger('created_at');$table->unsignedInteger('updated_at');

    要“全局”使用特定的日期格式,即对于所有模型,您可以在基本模型上设置日期格式并让所有模型继承该模型,或者使用特征。有关示例,请参阅this question

    【讨论】:

      猜你喜欢
      • 2012-04-30
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 2020-10-19
      • 2023-03-31
      • 1970-01-01
      相关资源
      最近更新 更多