beforeSave()
のメソッドで、データベースに格納されているデータに従って、モデルの一部の属性が変更されているかどうかをチェックします。属性が変更されたかどうかを確認する前にYii2
モデルが変更されたかどうかを確認するためのベストプラクティスはありますか?
私の目標は歴史を作ることです。属性が変更された場合は、コピーをmodel_history
テーブルに保存します。
beforeSave()
のメソッドで、データベースに格納されているデータに従って、モデルの一部の属性が変更されているかどうかをチェックします。属性が変更されたかどうかを確認する前にYii2
モデルが変更されたかどうかを確認するためのベストプラクティスはありますか?
私の目標は歴史を作ることです。属性が変更された場合は、コピーをmodel_history
テーブルに保存します。
afterSave()
を使用して実際に行うことができます。
public function afterSave($insert, $changedAttributes) {
parent::afterSave($insert, $changedAttributes);
if(!$insert) {
// your code here like $changedAttributes['myField'];
}
}
$changedAttributes
は、変更された属性の値を保存します。
あなたは、あなたは現在汚れている属性を取得するためにyii\db\ActiveRecord::getDirtyAttributes()
を呼び出すことができます汚れ属性
をチェックする必要があります。 beforeSaveで
http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#dirty-attributes
()は 'dirtyAttributes'モデル属性をチェックしようとすることができ:http://www.yiiframework.com/doc-2.0/yii-db-baseactiverecord.html#$dirtyAttributes-detailを –