[CakePHP]modifiedとupdatedについて

modifiedとupdatedはデータ更新時に自動的に修正日時を保存してくれるフィールドです。

ですが、更新されない場合もあります。

更新日時が書き変わらない場合

更新日時が書き変わるのは、該当のカラムを空にして保存した場合です。
find()でデータをもってきて、プログラムで書き換え後、そのまま保存した場合は、書き変わりません。

また、フォームからの入力時に、modifiedのカラムを明示的に入れた場合も当然書き変わりません。
注意したいのはCakePlusのFormhiddenHelperを使った時で、この場合もhiddenで入ってきてしまうので書き変わりません。
これはなかなか気が付きにくいので注意ですね。

書き換えたくない場合は、find()メソッドで該当カラム以外をfieldsオプションで指定するか、読みこんだ後あとunset()関数で削除する、または、date()関数などを使って現在日時をセットする、save()メソッドをオーバーライドして強制的に削除する、などの対策が必要です。

ちなみにsaveField()メソッドを使った場合は、強制的に書き変わりますので、書き換えたくない場合はsave()メソッドを使うしかないようです。

タイトルとURLをコピーしました