cakePHP-修改的字段未更新

cakePHP-修改的字段未更新,cakephp,Cakephp,有没有关于如何调试未更新的修改字段的想法?创建的字段工作正常 我不知道你需要看什么代码,所以请告诉我 谢谢该字段应命名为“已修改”,并带有“日期时间”类型。蛋糕应该为您自动更新字段。如果您想检查,只需查询它,或者查看数据库。就像Anh Pham所说的那样,修改的和创建的字段需要是日期时间,并且它们还需要默认为空,如所示。如果使用手动更新查询,问题也可能会出现。只有当您使用Cake自己的函数时,该字段才会更新。您应该尝试检查是否未使用Cake $this->ModelName->re

有没有关于如何调试未更新的修改字段的想法?创建的字段工作正常

我不知道你需要看什么代码,所以请告诉我


谢谢

该字段应命名为“已修改”,并带有“日期时间”类型。蛋糕应该为您自动更新字段。如果您想检查,只需查询它,或者查看数据库。

就像Anh Pham所说的那样,
修改的
创建的
字段需要是
日期时间
,并且它们还需要默认为
,如所示。

如果使用手动更新查询,问题也可能会出现。只有当您使用Cake自己的函数时,该字段才会更新。

您应该尝试检查是否未使用Cake

 $this->ModelName->read(NULL, $id); 

在保存数据之前,如果您认为您没有-仔细检查它

很可能您正在覆盖该字段,请在保存之前从对象中取消设置该字段,如下所示:

unset($user['User']['modified']);
现在您可以保存它:

$this->User->save($user);

在AppModel.php中,只需编写以下代码

public function beforeSave($options = array())  {
    parent::beforeSave();
    if (isset($this->data[$this->alias]['modified'])) {
        unset($this->data[$this->alias]['modified']);
    }
    if (isset($this->data[$this->alias]['created'])) {
        unset($this->data[$this->alias]['created']);
    }

}
这将适用于所有型号。但我们也可以对单个模型执行此操作

因为我们使用了
parent::beforeSave()作为我们的第一行,因此这可以在每个单独的模型中覆盖
多亏了继承。

我今天也遇到了同样的问题,发现
修改后的
字段只有在做了任何更改后才会更新,否则该字段将不会被触及。

我使用的是Model->save()函数。是的,它们都是DATETIME,默认为NULL。Created确实有效,但是在edit函数中调用$this->Model->save()时,它不会更新修改后的字段。您可能会在表单中再次提供这些字段。这些不允许出现在表单中或保存时正确更新!这将使数据库中修改和创建的字段保持为null,至少在我的Cake版本中是这样。您使用的是哪一个cake版本?我使用的是版本2.3.1。由于您没有将列的类型设置为时间戳,因此它在DB中被保留为null。如果将此数据类型用于列,则这些列将自动更新。当您保存以前从DB中找到的数据时,这不是问题,但当您从其他源(会话、请求…)填充时,这确实是一个问题。