2011-08-01 19 views
10

更新されていない変更フィールドをデバッグする方法についてのアイデアはありますか?作成されたフィールドは正常に動作します。cakePHP - 変更されたフィールドが更新されない

どのコードを見る必要があるか分かりませんので、教えてください。

ありがとうございます。

答えて

7

modifiedcreatedフィールドがDATETIMEする必要があり、彼らはまたexplained in the CakePHP book about the subjectとして、NULLにデフォルト設定する必要がある、と述べました。

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

今、あなたはそれを保存することができます:

このようにそれを保存する前にオブジェクトのフィールド
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']); 
    } 

} 

これはすべてのモデルで機能します。しかし、個々のモデルについてもそうすることができます。

parent::beforeSave();を最初の行に使用しているので、これは個々のモデルに上書きすることができます。 継承のおかげです。

+0

これは、少なくとも私のバージョンのCakeではデータベースの変更され作成されたフィールドをnullのままにします。 – Snorvarg

+0

私はケーキ2.Xでこれを試しました。どのケーキのバージョンを使用していますか? –

+0

バージョン2.3.1を使用しています。 – Snorvarg

0

今日は同じ問題を持って、すべての変更は、それ以外のフィールドは触れることはありません、行われている場合modifiedフィールドはのみ更新されてました。

関連する問題