各レコードの変更履歴の取得方法について

エンジニアリングチームの杉本です。
F-RevoCRMにて各データの変更履歴を取得する方法についてご紹介します。

VTEntityDeltaクラスについて

F-RevoCRMのVTEntityDeltaクラスを使用することで、指定したデータの変更履歴を取得することが可能です。
VTEntityDeltaクラス内にて、各データの保存前と保存後にデータの値を保存しています。
保存された値を取得する事で、指定した項目が変更されたかどうか、及び変更前の値が何なのかを確認することが可能です。

変更履歴の取得方法について

$moduleName = 'TestModule';
$entityId = 1;
$fieldName = 'testfield';

$entityDelta = new VTEntityDelta();
$entityDelta->computeDelta($moduleName, $id);

// 変更前の値を取得
$oldValue = $entityDelta->getOldValue($moduleName, $entityId, $fieldName);

// 変更後の値を取得
$newValue = $entityDelta->getCurrentValue($moduleName, $entityId, $fieldName);

// 指定した項目が変更されたかどうかを取得
$isChanged = $entityDelta->hasChanged($moduleName, $entityId, $fieldName);

if($isChanged){
 // 値が変更されていた場合の処理
}

VTEntityDeltaクラスのインスタンスを作成しcomputeDelta関数にてモジュール名とIDを指定することで、指定したIDのデータの変更履歴を取得可能です。

getOldValue関数にて指定した項目の変更前の値、getCurrentValue関数で指定した項目の変更後の値を取得します。
また、変更されているかどうかのみ知りたい場合は、hasChanged関数を使用することで指定した項目が変更されたかどうかを確認可能です。

特定項目の値が変更された場合にのみ処理を行いたい場合は、是非VTEntityDeltaクラスを使用してみてください。


それでは次回もまたThinkingReedエンジニアリングBlogをよろしくおねがいします!!

ご質問・お問い合わせはこちら

メールフォームへ