CakePHPにおいてON UPDATE CURRENT_TIMESTAMPを使用すると、文字列としてCURRENT_TIMESTAMPを格納しようとするので、MySQL側でTIMESTAMPとして処理できない。以下のようにすることで対処できる。
■CURRENT_TIMESTAMP
modifiedというカラム名をつければCakeが自動的に更新日時をセットするので必ずしもON UPDATE CURRENT_TIMESTAMPをセットする必要はない。
■saveメソッド
CakePHP 2系からどうも挙動が変わったようで、1.3系の手法では上手くいかなくなった。以下のように、アップデートして欲しくないカラムにfalseを指定することで対応できる。
$data['modified'] = false;
CakePHP 1.3系
付けたい場合、saveメソッドで保存するカラムを指定することで対処できる。
$this->User->save($this->data, true, array('name', 'birthday'));
上述のようにすることで$this->dataにあらゆるキーとそれに紐付く値が格納されていても、保存されるのはnameカラムとbirthdayカラムのみである。これはアプリケーションをセキュアにする目的でも使用できるので、常時使用することをお勧めする。