Webサービス開発、あるよ
Webサービス開発、あるよ
2009.07.28

updateAllでまとめてアップデート

まっちー

単一のモデルにおいて、複数のレコードをまとめてアップデートしたいようなときには、updateAll()を使うといい。

構文的にはこんな感じ

$this->Model->updateAll($fields, $conditons);

$fieldsには更新したいフィールドの値を、$conditionsには更新したいレコードの値をそれぞれ配列で入れる。

たとえば、usersというテーブルにageとseijinという二つのフィールドがあるとする。どちらもint型で、ageには年齢が、seijinには、1か0の値が入っている。成人だったら1、そうでなければ0という具合に。

今ここで、20歳以上の人のseijinフィールドの値を全て1にしたいとしよう。

$fields = array('age >= ' => '20');

$conditions = array('seijin' => '1');

$this->User->updateAll($fields, $conditions);

これでOK。SQL的にはこんな感じになる。

UPDATE €`users` SET `seijin` = 1 WHERE `age` >= 20
U Y A
K A