【CakePHP】データベースに保存する(saveの使い方)

2019年7月29日

バージョン:CakePHP 2.x

CakePHPでデータを保存するためには「save」を使用します。
ビューで適切にFormHelperを使用していれば、データを「$this->request->data」で受け取り簡単にデータの登録を行うことができます。

基本的な使い方

public function add() {
	// ポストデータがあれば保存をする(保存ボタンが押された場合)
	if ($this->request->is('post')) {
		//保存する
		if ($this->User->save($this->request->data)) {
			// メッセージをセットしてリダイレクトする
			$this->Session->setFlash('データを登録しました!');
			return $this->redirect(array('action'=>'index'));
		}
		else
		{
			//保存が失敗した場合のメッセージ
			$this->Session->setFlash('登録に失敗しました');
		}
	}
	else{
		//ポストデータがない場合の処理
	}
}
<?php echo $this->Form->create('User'); ?>
<?php echo $this->Form->input('name'); ?>
<?php echo $this->Form->submit('保存');?>
<?php echo $this->Form->end(); ?>

編集の場合

まず、編集ページにデータのIDを渡します。

<?php echo $this->Html->link('編集',array('action'=>'edit',$user['User']['id'])); ?>

コントローラーでは、IDを受け取り検索してViewに渡します。

public function edit($id) {
	$this->User->id=$id;
	
	// ポストデータがあれば保存をする(保存ボタンが押された場合)
	if ($this->request->is('post')) {
		//保存する
		if ($this->User->save($this->request->data)) {
			// メッセージをセットしてリダイレクトする
			$this->Session->setFlash('データを登録しました!');
			return $this->redirect(array('action'=>'index'));
		}
		else
		{
			//保存が失敗した場合のメッセージ
			$this->Session->setFlash('登録に失敗しました');
		}
	}
	else{
		//ポストじゃなければユーザを検索してViewに渡す
		$this->set('user', $this-> User->findById($id));
	}
}

ビューは新規登録時と基本的には同じです。

<?php echo $this->Form->create('User'); ?>
<?php echo $this->Form->input('name'); ?>
<?php echo $this->Form->submit('保存');?>
<?php echo $this->Form->end(); ?>

参考:公式サイト(データを保存する)

スポンサーリンク