如何在 Laravel Migrations 中将默认时间戳设置为当前时间戳?

Barbara Streisand
发布: 2024-10-20 11:40:02
原创
617 人浏览过

How Do I Set the Default Timestamp to the Current Timestamp in Laravel Migrations?

Laravel 迁移:将默认时间戳设置为当前时间戳

在 Laravel 中,时间戳通常用于跟踪活动,例如创建或更新记录的时间。默认情况下,这些时间戳设置为 0000-00-00 00:00。但是,自动将默认值设置为当前时间戳会很有用。

使用 DB::raw()

对于要定期更新的时间戳,可以使用 DB ::raw() 函数指定 CURRENT_TIMESTAMP 作为默认值:

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
登录后复制

这确保了created_at列将始终包含当前时间戳,无论是在最初创建记录时还是在更新记录时。

使用 useCurrent() 或 useCurrentOnUpdate()

或者,您可以使用 useCurrent() 或 useCurrentOnUpdate() 方法来实现相同的结果:

$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrentOnUpdate();
登录后复制

useCurrent () 方法将当前时间戳指定为创建和更新的默认值,而 useCurrentOnUpdate() 仅设置更新的默认值。

MySQL ON UPDATE 子句

对于 MySQL,您可以在 DB::raw() 中使用 ON UPDATE 子句:

$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
登录后复制

陷阱

  • MySQL: 从 MySQL 5.7 开始,您可能需要显式设置时间戳列的有效默认值,因为 0000-00-00 00:00:00 不再被接受。
  • PostgreSQL & Laravel 4.x: 在 Laravel 4.x 中,您如果您使用默认精度的 CURRENT_TIMESTAMP,可能会遇到解析时间戳的问题。使用 CURRENT_TIMESTAMP(0) 来避免这种情况。

以上是如何在 Laravel Migrations 中将默认时间戳设置为当前时间戳?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板