我有一个laravel项目在我的本地版本的Google应用引擎上正常运行,但是在部署时,即使设置了不是,也会更改created_at时间戳。
我所有的模特都有
public $timestamps = false;
因为我需要更新行的某些部分而不影响时间戳,所以我手动执行此操作。
在我的存储库中,我有以下功能:
public function setLock($id)
{
$row = $this->model->find($id);
if(!$row){
return null;
}
$row->timestamps = false;
if($row->locked_at == NULL || strtotime($row->locked_at) < strtotime(date('Y-m-d H:i:s')) || $row->locked_by == Auth::id()){
try{
$row->locked_by = Auth::id();
$row->locked_at = date('Y-m-d H:i:s', strtotime("+5 min"));
$row->save();
return true;
}catch(PDOException $e){
Log::error('Error setting lock at ID:' .$id.': ' . $e->getMessage());
return null;
}
}else{
return false;
}
}
仍然更新created_at时间戳,无论是否设置了timestamp变量,都在模型和函数中。
我也尝试在模型中设置此功能:
public function setUpdatedAt($value)
{
//Do-nothing
}
但是,它仍在更新..
这里有什么我想念的吗?
答案 0 :(得分:1)
就像我们在评论中讨论的那样,每次更新行时都会更改create_at的数据库。
您可以删除'create_at'列的默认值
或者,每次更新行时都可以发送原始的created_at。这样您就可以保留原始创建日期。
修改强>
如果您决定将deafult值设置为null,请确保在插入新行时使用日期和时间更新它们。
答案 1 :(得分:0)
您必须检查表中的created_at字段属性。如果设置为“更新当前时间戳”&#39;然后改为空。
我认为这可能对你有所帮助。