UPDATE を使って指定行を更新する。
■Model
Model はそのまま
■Controller
/Test/update?id=10 とか /Test/update/10 で更新できるようにしておく。
in Controller/TestController.php
public function update($id=null) { if (isset($this->params['url']['id'])) $id = $this->params['url']['id']; if ( $id != null ) { $this->Test->read(null, $id); $this->Test->set('Age',30 ); $this->Test->set('UpdateDate',date('c')); $this->Test->save(); } $this->set('Test',$this->Test->find('all')); }
read した後に set して save する。これは、PK(ID) が入っているので read がないパターンも作れるハズ。
複数の set の場合は、array を使っても ok。
public function update($id=null) { if (isset($this->params['url']['id'])) $id = $this->params['url']['id']; if ( $id != null ) { $this->Test->read(null, $id); $this->Test->set( array('Age'=>30, 'UpdateDate',date('c'))); $this->Test->save(); } $this->set('Test',$this->Test->find('all')); }
■View
View は同じ
■結果
更新した結果が表示される。
※UPDATE のために COUNT が3回呼び出されているのがなんとも。たくさんのUPDATEをする場合には、パフォーマンスに影響を与えるので、これは調節が必要。