首页  >  文章  >  后端开发  >  如何在 Laravel Migrations 中将默认时间戳设置为当前时间戳?

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

Barbara Streisand
Barbara Streisand原创
2024-10-20 11:40:02538浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn