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

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

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