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 的列属性