ちょこっとはまったので覚え書き程度に。。。
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()で行えます。
最近のコメント