2011-08-01 61 views

回答

7

像映范表示,modifiedcreated场必须DATETIME,他们还需要默认NULL,为explained in the CakePHP book about the subject

+1

Yeap,它们都是DATETIME,并且默认为NULL。 Created可以工作,但是在编辑函数中调用$ this-> Model-> save()时,它不会更新修改的字段。 – AlexBrand

+3

您可能在表单中再次提供这些字段。那些不允许出现在表格中或保存以便正确更新! – mark

1

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

0

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

+0

我正在使用Model-> save()函数。 – AlexBrand

5

你应该尝试检查,如果你不保存数据之前使用

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

,如果你认为你没有 - 仔细检查它

4

最有可能要覆盖领域,未设置从对象领域节约像这样前:

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

现在你可以将它保存:

$this->User->save($user); 
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();作为我们的第一行因此这可以覆盖在每个单独的模型。 感谢继承。

+0

这会在数据库中将修改和创建的字段留空,至少在我的Cake版本中。 – Snorvarg

+0

我已经在蛋糕2.X中试过了。你正在使用哪个蛋糕版本? –

+0

我正在使用版本2.3.1。 – Snorvarg

0

今天我得到了同样的问题,发现modified字段是只更新如果有任何更改,否则该字段将不会被触及。