単一のモデルにおいて、複数のレコードをまとめてアップデートしたいようなときには、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
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。