UPDATE を使って指定行を更新する。
■Model
Model はそのまま
■Controller
/Test/update?id=10 とか /Test/update/10 で更新できるようにしておく。
in Controller/TestController.php
1 2 3 4 5 6 7 8 9 10 | 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。
1 2 3 4 5 6 7 8 9 10 11 | 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をする場合には、パフォーマンスに影響を与えるので、これは調節が必要。