首页 >数据库 >mysql教程 >如何在 Laravel 迁移中将时间戳列的默认值设置为 CURRENT_TIMESTAMP?

如何在 Laravel 迁移中将时间戳列的默认值设置为 CURRENT_TIMESTAMP?

Linda Hamilton
Linda Hamilton原创
2024-12-03 02:44:14242浏览

How to Set a Timestamp Column's Default Value to CURRENT_TIMESTAMP in Laravel Migrations?

使用 Laravel 迁移将时间戳列默认值设置为当前时间戳

问题:

如何创建默认值为 CURRENT_TIMESTAMP 的时间戳列使用 Laravel 模式更新 CURRENT_TIMESTAMP构建器/迁移?

答案:

使用 DB::raw()(所有数据库):

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));

使用 useCurrent () (Laravel 5.1.25 ):

$table->timestamp('created_at')->useCurrent();

仅适用于 MySQL:

在 ON UPDATE 中使用 DB::raw():

$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));

使用 useCurrent() 和useCurrentOnUpdate() (Laravel 8.36.0 ):

$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();

陷阱:

  • MySQL:

    • 从 MySQL 5.7 开始, 0000-00-00 00:00:00 不是有效日期。使用 useCurrent() 将时间戳列默认为当前时间戳,或使其可为空。
  • PostgreSQL 和 Laravel 4.x:

    • 显式指定 CURRENT_TIMESTAMP 的精度为零,以避免解析错误。 (从 Laravel 5.0 开始,精度默认设置为零。)

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

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