Yiiでデータのupdateの仕方について

Yiiでデータを更新する場合、

$model->save();

のようにするとデータがない場合は新規登録(insert)、データがあれば更新(update)するようなSQLが発行される。

ただ、特定のカラムのみ更新したいとか、ちょっと条件をつけて更新したい、カラムをカウントアップしたいという場合は、上記ではできないので、方法を書いておく。

update hoge_table set name='ほげ';

のようにnameカラムだけ更新したい場合は、モデル内で

$this->name='ほげ';
$this->update(array('name'));

のようにする。

update hoge_table set name='ほげ' where id=5 and status=2;

のように条件をつけて更新したい場合は、

$this->updateAll(
  array(
    'name'=>'ほげ',
  ),
  'id=:id and status=:status',
  array(
    ':id'=>5,
    ':status'=>2
  )
));

のようにする。

update hoge_table set num=num+4 where id=5 and status=2;

のようにカラムをカウントアップしたい場合は、

$this->updateCounters(
  array(
    'num'=>4,
  ),
  'id=:id and status=:status',
  array(
    ':id'=>5,
    ':status'=>2
  )
));

のようにする。

※参考
CActiveRecord

投稿日:
カテゴリー: php タグ: