Laravel 5.1 created_at时间戳自动更改

时间:2016-01-18 16:07:03

标签: php laravel laravel-5.1

我有一个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
}

但是,它仍在更新..

这里有什么我想念的吗?

2 个答案:

答案 0 :(得分:1)

就像我们在评论中讨论的那样,每次更新行时都会更改create_at的数据库。

您可以删除'create_at'列的默认值

或者,每次更新行时都可以发送原始的created_at。这样您就可以保留原始创建日期。

修改

如果您决定将deafult值设置为null,请确保在插入新行时使用日期和时间更新它们。

答案 1 :(得分:0)

您必须检查表中的created_at字段属性。如果设置为“更新当前时间戳”&#39;然后改为空。

我认为这可能对你有所帮助。