CakePHPのupdateAll()でDATE型の注意点
CakePHP1.3でupdateAllメソッドを使っていて、少しはまったのでメモ。
通常は
$updateAllFields= array('field1'=>1, 'field2'=>3, 'last_updated'=>date('Y-m-d')); $updateAllCondition= array('field4'=>5); $this->Hoge->updateAll($updateAllFields, $updateAllCondition);
のようにかけるのだが、ここに、DATE型のカラムがあったら注意が必要。上でいえばlast_updatedがそうなのだが、出来上がったUPDATE文が
UPDATE hoges SET field1 = 1, field2 = 3, last_updated = 2009-07-15 WHERE field4 = 5
となって、自動的にシングルクオートをつけてくれないのだ。なので、手動でするしかない。
$updateAllFields= array('field1'=>1, 'field2'=>3, 'last_updated'=>"'".date("Y-m-d")."'");
とすればOK。