11月 05

ちょこっとはまったので覚え書き程度に。。。

CakePHPでは、Model::save()によって自動的に、insertとupdateを振り分けるようになっています。

で、id以外を条件としたい場合(column1の値がnのcolumn2の値を更新したい などなど)は以下のような形で行えます。

test_controller.php

1
2
3
4
5
6
7
8
9
function update() {
if(!empty($this->data)) {
$this->Model->updateAll(array(
"column2" => "更新したい内容"
), array(
"column1" => "hogehoge"
));
}
}

※これで更新処理はおこなえますが、上述の状態では、インジェクションが行えるような状態(エスケープされていない)ので、エスケープ処理も含める必要があります。

第一引数は更新したいカラム名と値がペアになっている配列、第二引数が条件として指定したい配列を指定します。

後は注意書き通り、エスケープ処理を忘れずに施せば、完了です。

ちなみに、エスケープ処理はConnectionManagerからデータソースを引き上げて、Db::escape()で行えます。

TasteRank

度合い*****(---)

Leave a Reply