禁用 Laravel 的 Eloquent 时间戳

2021-12-26 00:00:00 php laravel eloquent

我正在将我们的一个 Web 应用程序从 CodeIgniter 转换为 Laravel.然而,此时我们不想将 updated_at/created_at 字段添加到我们所有的表中,因为我们有一个日志类可以更深入地完成所有这些工作已经.

I'm in the process of converting one of our web applications from CodeIgniter to Laravel. However at this moment we don't want to add the updated_at / created_at fields to all of our tables as we have a logging class that does all this in more depth for us already.

我知道我可以在:

VendorlaravelframeworksrcilluminateDatebaseEloquentModel.php

然而,我宁愿不更改 Laravel 的核心文件,也不想让我的每个模型都将其放在顶部.有没有办法在其他地方为所有模型禁用此功能?

However I'd rather not change a core file for Laravel, or have everyone of my models have that at the top. Is there any way to disable this elsewhere for all models?

推荐答案

你要么必须在每个模型中声明 public $timestamps = false; ,要么创建一个 BaseModel,在那里定义它,并有你所有的模型都扩展了它而不是雄辩.如果您使用 Eloquent,请记住数据透视表必须有时间戳.

You either have to declare public $timestamps = false; in every model, or create a BaseModel, define it there, and have all your models extend it instead of eloquent. Just bare in mind pivot tables MUST have timestamps if you're using Eloquent.

更新:请注意,在 Laravel v3 之后,数据透视表中不再需要时间戳.

Update: Note that timestamps are no longer REQUIRED in pivot tables after Laravel v3.

更新:您还可以通过从迁移中删除 $table->timestamps() 来禁用时间戳.

Update: You can also disable timestamps by removing $table->timestamps() from your migration.

相关文章