【发布时间】:2015-11-26 15:05:40
【问题描述】:
我是 laravel 的新手。最近,我为我的应用程序创建了我的 ER 图。在学习 laravel 时,我看到他们在创建 created_at 和 updated_at 列的模式构建器中有这个时间戳属性。根据我的建模,我真的不需要这些额外的列,因此必须拥有它们,或者在每个表上都有这些列有什么好处。
【问题讨论】:
我是 laravel 的新手。最近,我为我的应用程序创建了我的 ER 图。在学习 laravel 时,我看到他们在创建 created_at 和 updated_at 列的模式构建器中有这个时间戳属性。根据我的建模,我真的不需要这些额外的列,因此必须拥有它们,或者在每个表上都有这些列有什么好处。
【问题讨论】:
拥有它们的好处是,如果您需要它们,Eloquent 会自动更新这些字段。假设你更新了一个模型,Eloquent 会自动设置 updated_at,让你编写、维护和思考的代码更少。
由于不需要在每个表上都有这些时间戳,您可以简单地通过在相关模型上使用 public $timestamps = false; 来禁用它们:
class User extends Eloquent {
protected $table = 'users';
public $timestamps = false;
}
【讨论】:
嗯,时间戳可让您跟踪记录最近的更新时间。但它在 laravel 中不是强制性的。当然,有时您真的不需要这些列。
如果您不想使用时间戳,请将其从迁移文件中删除,并通过在您各自的模型中指定 public $timestamps = false 来禁用 created and updated at 列。
【讨论】:
首先要停止使用表中的时间戳,不要在您的Schema::table() 或Schema::create() 实现中包含$table->timestamps(),然后在其表中不包含时间戳的每个相应模型类中写入protected $timestamps = false;
时间戳的目的是跟踪插入或更新新记录的日期和时间,因此,每当您插入新记录(这意味着创建新模型)时,created_at 和 updated_at 列将自动填充当前日期和时间,每次更新记录时,它的 updated_at 列都会更新为更新的日期和时间。
我不知道您使用的是哪个版本的 Laravel,但 here's the Eloquent Model documentation 和 migration documentation too 供您参考。
请尝试仔细阅读 Laravel 文档,它将让您具体了解事物的工作原理,以及如何轻松地进行开发。
【讨论】: