Yii2 avant d'enregistrer vérifier si des attributs sont modifiés
Je veux vérifier si certains attributs dans mon modèle sont modifiées dans beforeSave()
méthode selon les données stockées dans la base de données.
Est-il recommandé de vérifier si le modèle a changé?
Mon but es de faire l'histoire. Si certaines modifications d'attribut, j'ai enregistrer une copie dans model_history
table.
Dans beforeSave (), vous pouvez essayer de vérifier
dirtyAttributes
modèle attribut: yiiframework.com/doc-2.0/...OriginalL'auteur Aleš | 2017-02-27
Vous devez vous connecter pour publier un commentaire.
Vous pouvez réellement le faire à l'aide de
afterSave()
.$changedAttributes
enregistre les valeurs des attributs qui ont été modifiés.OriginalL'auteur marche
Vous devez vérifier pour sale attributs
Vous pouvez appeler
yii\db\ActiveRecord::getDirtyAttributes()
pour obtenir les attributs qui ne sont sales.http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#dirty-attributes
OriginalL'auteur Ripper
Vous devez être prudent,par l'utilisation dirtyAttributes bien parce que yii, considérez les points suivants:
avant myfield type int =4
après myfield type string = "4"
si il arrive myfield être en dirtyAttributes automatiquement.
Autre point:
Pour votre dirtyAttributes vos champs doit être "safeAttributes" dans le cas où vous allez travailler, d'une autre manière ce changement sera ignoré
ce qui concerne
OriginalL'auteur Tomas Grecio Ramirez