「ログ可能」動作のような動作は、すでにそれを行っており、情報を個別に保存しています。私はあなたにも同じことをするようアドバイスします。「変更」は必ずしも同じテーブルに入れる必要はありません。ただし、そう思われる場合は、「差分」のみを作成し、同じレコードの選択したフィールドに格納する、独自の「変更された」Logable 動作を作成できます。
PS: RevisionBehaviorも参照してください。また、いくつかの差分アルゴリズムも含まれています。次に、レコードを最後に変更したユーザーを格納するWhoDidIt 動作があります。ただし、同じテーブルで。したがって、これを上記と組み合わせるとうまくいくはずです。
どちらにしても:
- モデル自体でコールバック (beforeSave/afterSave) を使用するか、動作として (クリーナー) を使用します。
- 差分を計算する
- 差分を別のテーブルに保存するか、あなたの場合のように追加のテーブルフィールドに保存します。
実際にここに何かを書いて仕事をするのはとても簡単です。ここでの自発的な演習は、より「一般的」に記述することです。将来、同じ機能を他のモデルに再利用したいと思うかもしれません。その場合、コピーアンドペーストはかなり悪いスタイルになります。ここでの目標は、簡単に再利用できる汎用コードを作成することです。最初のコードが機能する場合は、好きなだけ多くのモデルにアタッチできる汎用の ChangesBehavior に書き直してみてください。リンクされた例を使用するか、そこにある他の動作を見て、その方法を理解することができます。
また、あなたの振る舞いを github/plugins.cakephp で公開して、コミュニティに何かを還元することもできます。多分他の人もそれが便利だと思うでしょう。