[CakePHP] IDを指定して行を更新する

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をする場合には、パフォーマンスに影響を与えるので、これは調節が必要。

カテゴリー: CakePHP パーマリンク