Des idées sur la manière de déboguer un champ modifié qui n'est pas mis à jour? Le champ créé fonctionne bien. P>
Je ne suis pas sûr de ce que vous auriez besoin de le regarder, faites-le moi savoir! P>
merci p>
7 Réponses :
Ce champ doit être nommé "modifié" avec type "DateTime". Le gâteau doit mettre à jour le champ automatiquement pour vous. Si vous souhaitez vérifier, il suffit de les interroger ou d'examiner la base de données. P>
Comme ANH Pham a dit, le champ modifié code> et
créé code> doit être code> DateTime code> et ils doivent également avoir une valeur par défaut sur
null < / Code>, comme expliqué dans le livre CakePHP sur le sujet . < / p>
Yeap, ils sont à la fois DateTime et par défaut à NULL. Créé fait fonctionne, cependant, lorsque vous appelez ceci-> Modèle-> Enregistrer () dans la fonction d'édition, il ne met pas à jour le champ modifié.
Vous fournissez probablement ces champs à nouveau dans le formulaire. Ceux ne sont pas autorisés à être présents sous la forme ou sur Enregistrer pour être mis à jour correctement!
Le problème peut également survenir si vous utilisez des requêtes de mise à jour manuelle. Le champ est mis à jour uniquement lorsque vous utilisez les fonctions de gâteau. P>
J'utilise la fonction modèle-> sauvegarde ().
Vous devez essayer de vérifier si vous n'avez pas utilisé
$this->ModelName->read(NULL, $id);
Très probablement, vous écrasez le champ, désintérez le champ de l'objet avant de l'enregistrer comme ceci: Vous pouvez le sauvegarder: p> $this->User->save($user);
Ce n'est pas un problème lorsque vous enregistrez des données déjà découvertes de DB, mais c'est vraiment un problème lorsque vous peuplez à partir d'autres sources (session, demande ...).
dans Appmodel.php, écrivez simplement le code suivant.
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']); } }
Cela laissera les champs modifiés et créés comme null dans la base de données, au moins dans ma version du gâteau.
J'ai essayé cela dans Cake 2.x. Quelle version de gâteau utilisez-vous?
J'utilise la version 2.3.1.
Il a été laissé comme NULL dans la DB puisque vous n'avez pas défini le type de colonne sous forme d'horodatage. Si vous utilisez ce type de données pour les colonnes, ceux-ci seront automatiquement mis à jour.
J'ai le même problème aujourd'hui et j'ai découvert que le champ modifié code> est uniquement mis à jour si des modifications ont été apportées forte>, sinon le champ ne sera pas touché. P >