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

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

プログラマのまっちーです。酒が大好きです。ある一定量のお酒を飲むと壊れたレディオモードに入り、同じことを繰り返す癖があります。宜しくお願いいたします。

このメンバーの記事をもっと読む