【问题标题】:Why Laravel provides default timestamps?为什么 Laravel 提供默认时间戳?
【发布时间】:2019-01-07 19:46:58
【问题描述】:

当我们在 Laravel 中创建新的模型或数据库迁移时,我们可以使用 $table->timestamps();,它默认创建 created_atupdated_at。从最佳项目结构的角度来看,为什么项目需要这些字段?

【问题讨论】:

    标签: php laravel-5.6 laravel-5.7


    【解决方案1】:

    知道何时创建或更新对象总是有用的。尽管我个人更喜欢为不同的目的创建不同的时间戳,比如如果我有一个异步处理的实体,我通常会添加一个名为 completed_at 的日期时间列,以便我知道作业何时完成。

    如果您不喜欢默认时间戳,您可以通过分配 public $timestamps = false; 来移除它们。在你的 Eloquent 模型中。

    【讨论】:

      【解决方案2】:

      您在表中插入的每个Model/Records 最好跟踪其created_at 时间和updated_at 时间。 Timestamp 用例可能因个人而异。

      大多数开发人员使用时间戳来跟踪他们的数据库记录。

      这就是为什么 Laravel Eloquent 默认提供 created_atupdated_at 选项的原因。每当创建模型/记录时,created_at 列值会自动设置,每当记录更新时,updated_at 列值就会自动设置为该时间,因此开发人员需要编写最少的代码来管理时间戳。

      Laravel 时间戳是可选的,在 Model 中使用 public $timestamps = false; 来禁用时间戳。

      【讨论】:

        【解决方案3】:

        create_atupdated_at 在您的系统中有多个角色时非常有用。在我的项目中,我有多个角色,因此我添加了诸如 updated_bycreated_by 之类的列以及 laravel 的 created_atupdated_at 我可以找到它的创建或更新日期和时间以及我的列 created_at 和 @ 987654328@我可以查到which user created recordwhich user updated记录。

        还有 laravel 时间戳 automatically update 更新时的记录列,因此您无需担心它来编写代码以更改表中的 update_at 列。

        所以基本上对于tracing timestamp 在您的项目中非常有用。

        如果您不需要在每个表中都使用它,那么您可以在模型中使用下面的行来避免它。

        public $timestamps = false;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-29
          • 1970-01-01
          • 2017-03-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多