laravel - Laravel:将日期时间到现在的时间戳设置为 int
问题描述
我正在创建一个 Laravel 应用程序。早些时候,我曾经使用 created_at 和 updated_at 的 datetime 数据类型来设计数据库,但我的一个朋友建议我应该使用时间戳而不是 datetime,因为它适用于不同的时区。
使用时间戳而不是日期时间格式是个好主意吗?会不会有性能问题?如果“否”,那么我们如何在 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'
格式为“自 Unix 纪元以来的秒数” 。php 日期文档中提供了更多格式。
您还需要更改模型的迁移。替换$table->timestamps();
为$table->unsignedInteger('created_at');
和$table->unsignedInteger('updated_at');
。
要“全局”使用特定的日期格式,即对于所有模型,您可以在基本模型上设置日期格式并让所有模型继承该模型,或者使用特征。有关示例,请参见此问题。
推荐阅读
- java - HTTP 状态 404 - 为什么服务器找不到我映射到的 servlet?
- python - 使用 .destroy() 关闭弹出窗口的按钮会给出未定义弹出窗口的错误。使用 Python tkinter
- javascript - 用文字改变图像
- css - 如何在 Bootstrap 5 Switch 中更改旋钮的颜色
- spring-boot - 何时在 Spring Boot 中使用 @RequestMapping、@GetMapping 和 @PostMapping?
- javascript - 如何使 CSS 宽度属性等于数学表达式的结果
- computer-science - 计算机系统是否既需要高速缓存内存又需要虚拟内存,或者一个可以替代另一个?为什么或者为什么不?
- selenium - Anroid Studio 上的重复类 org.openqa.selenium 错误
- c# - 在同步方法调用链(c#)中,异步/等待的深度级别是否存在任何性能差异?
- python - perf_counter() 仅打印秒数