我现在正在学习Laravel和Eloquent,并且已经设置了一些初步的迁移。我的一个表只需要一个创建时间,因为一旦插入一行,它就永远不会更新:
// The run table only needs a creation timestamp, not an updated timestamp
Schema::create('runs', function (Blueprint $table) {
$table->increments('id');
$table->timestamp('created_at');
});
我了解默认情况下,Eloquent要求created_at
和updated_at
列都存在,并且此功能可以完全关闭。从手册:
默认情况下,Eloquent希望您的表上存在created_at和updated_at列。如果您不希望Eloquent自动管理这些列,请将模型上的
$timestamps
属性设置为false。
但是,是否可以要求Eloquent自动设置创建时间而不是更新时间?我意识到我可以手动执行此操作,但如果Eloquent可以“免费”执行此操作,那就太好了。
答案 0 :(得分:2)
简答:不。
我查看了处理时间戳的framework/src/Illuminate/Database/Eloquent/Model.php
,但这不是直接可能的。
您可以覆盖一堆方法使其正常工作:
public function setUpdatedAt($value)
static::UPDATED_AT
usesTimestamps()
充其量,这很容易受到未来代码更改的影响,所以我不推荐它。
答案 1 :(得分:0)
您可以使用
$model->touch();