2017-02-27 23 views
4

beforeSave()のメソッドで、データベースに格納されているデータに従って、モデルの一部の属性が変更されているかどうかをチェックします。属性が変更されたかどうかを確認する前にYii2

モデルが変更されたかどうかを確認するためのベストプラクティスはありますか?

私の目標は歴史を作ることです。属性が変更された場合は、コピーをmodel_historyテーブルに保存します。

+1

()は 'dirtyAttributes'モデル属性をチェックしようとすることができ:http://www.yiiframework.com/doc-2.0/yii-db-baseactiverecord.html#$dirtyAttributes-detailを –

答えて

4

afterSave()を使用して実際に行うことができます。

public function afterSave($insert, $changedAttributes) { 
    parent::afterSave($insert, $changedAttributes); 
    if(!$insert) { 
     // your code here like $changedAttributes['myField']; 
    } 
} 

$changedAttributesは、変更された属性の値を保存します。

関連する問題