为什么Laravel提供默认时间戳?

时间:2019-01-07 10:56:00

标签: php laravel-5.6 laravel-5.7

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

3 个答案:

答案 0 :(得分:1)

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

如果您不喜欢默认时间戳,可以通过指定public $ timestamps = false来删除它们。在您的口才模型中。

答案 1 :(得分:1)

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

大多数开发人员都使用timepstamp来跟踪其数据库记录。

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

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

答案 2 :(得分:0)

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

在更新时,laravel时间戳为automatically update记录列,因此您不必担心为编写表中的update_at列而编写代码。

因此对于tracing而言,timestamp在您的项目中非常有用。

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

public $timestamps = false;