ちょこっとはまったので覚え書き程度に。。。
CakePHPでは、Model::save()によって自動的に、insertとupdateを振り分けるようになっています。
で、id以外を条件としたい場合(column1の値がnのcolumn2の値を更新したい などなど)は以下のような形で行えます。
// test_controller. function update() { if(!empty($this->data)) { $this->Model->updateAll(array( "column2" => "更新したい内容" ), array( "column1" => "hogehoge" )); } }
※これで更新処理はおこなえますが、上述の状態では、インジェクションが行えるような状態(エスケープされていない)ので、エスケープ処理も含める必要があります。
第一引数は更新したいカラム名と値がペアになっている配列、第二引数が条件として指定したい配列を指定します。
後は注意書き通り、エスケープ処理を忘れずに施せば、完了です。
ちなみに、エスケープ処理はConnectionManagerからデータソースを引き上げて、Db::escape()で行えます。
最近のコメント