【CakePHP】データベースに保存する(saveの使い方)
バージョン: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(); ?>