2011-08-01 76 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字段是只更新如果有任何更改,否則該字段將不會被觸及。