cakePHP - 修改后的字段未更新

时间:2011-08-01 01:55:54

标签: cakephp

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

我不确定您需要查看哪些代码,请告诉我们!

由于

7 个答案:

答案 0 :(得分:7)

如同Anh Pham所说,modifiedcreated字段必须为DATETIME,并且还需要默认为NULLexplained in the CakePHP book about the subject。< / p>

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:5)

最有可能的是你要覆盖该字段,在保存字段之前取消设置该字段,如下所示:

unset($user['User']['modified']);

现在你可以保存它:

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

答案 3 :(得分:1)

该字段应使用'datetime'类型命名为'modified'。 Cake应该自动为您更新字段。如果您想检查,只需查询它,或查看数据库。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

在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']);
    }

}

这适用于所有型号。但我们也可以为个别MODELS做到这一点。

由于我们已使用parent::beforeSave();作为第一行,因此可以在每个单独的模型中覆盖。 感谢继承。

答案 6 :(得分:0)

我今天遇到了同样的问题,发现from itertools import chain active = list(chain(queryset1, queryset2)) 字段只有在进行了任何更改后才会更新,否则不会触及该字段。