Laravel 中 created_at 和 updated_at 列的优点是啥

Posted

技术标签:

【中文标题】Laravel 中 created_at 和 updated_at 列的优点是啥【英文标题】:What are the advantages of the created_at and updated_at column in LaravelLaravel 中 created_at 和 updated_at 列的优点是什么 【发布时间】:2015-11-26 15:05:40 【问题描述】:

我是 laravel 的新手。最近,我为我的应用程序创建了我的 ER 图。在学习 laravel 时,我看到他们在创建 created_at 和 updated_at 列的模式构建器中有这个时间戳属性。根据我的建模,我真的不需要这些额外的列,因此必须拥有它们,或者在每个表上都有这些列有什么好处。

【问题讨论】:

【参考方案1】:

拥有它们的好处是,如果您需要它们,Eloquent 会自动更新这些字段。假设你更新了一个模型,Eloquent 会自动设置 updated_at,让你编写、维护和思考的代码更少。

由于不需要在每个表上都有这些时间戳,您可以简单地通过在相关模型上使用 public $timestamps = false; 来禁用它们:

class User extends Eloquent 

    protected $table = 'users';

    public $timestamps = false;


【讨论】:

几个很好的答案。谢谢大家。【参考方案2】:

嗯,时间戳可让您跟踪记录最近的更新时间。但它在 laravel 中不是强制性的。当然,有时您真的不需要这些列。 如果您不想使用时间戳,请将其从迁移文件中删除,并通过在您各自的模型中指定 public $timestamps = false 来禁用 created and updated at 列。

【讨论】:

【参考方案3】:

如何防止在模型中使用时间戳?

首先要停止使用表中的时间戳,不要在您的Schema::table()Schema::create() 实现中包含$table->timestamps(),然后在其表中不包含时间戳的每个相应模型类中写入protected $timestamps = false;

Laravel 中时间戳的作用是什么?

时间戳的目的是跟踪插入或更新新记录的日期和时间,因此,每当您插入新记录(这意味着创建新模型)时,created_at 和 updated_at 列将自动填充当前日期和时间,每次更新记录时,它的 updated_at 列都会更新为更新的日期和时间。

我不知道您使用的是哪个版本的 Laravel,但 here's the Eloquent Model documentation 和 migration documentation too 供您参考。

请尝试仔细阅读 Laravel 文档,它将让您具体了解事物的工作原理,以及如何轻松地进行开发。

【讨论】:

以上是关于Laravel 中 created_at 和 updated_at 列的优点是啥的主要内容,如果未能解决你的问题,请参考以下文章

created_at 列中的时间不正确 - Laravel 5.4

Laravel 合并 created_at 和 updated_at 时间戳

Laravel 自定义 created_at 和 updated_at

如何在 Laravel 中更新 created_at 的列属性

Laravel 在 created_at 等所有模型上添加列值的方法

如何更新 Laravel Eloquent 管理的时间戳(created_at 和 updated_at)的时区?