アソシエーション利用のデータアクセス (1) (6/6)
作成:2015-11-07 10:59
更新:2015-11-07 10:59
更新:2015-11-07 10:59
■Membersの削除
データの削除は、更新と同様、indexで表示されるリストに用意した「Delete」リンクをクリックして行います。
このリンクは、「/members/delete/ID番号」というアドレスにPOST送信するようになっています。ですから、deleteアクションに削除の処理を用意すれば、データの削除が行えるというわけです。
実際にindexにアクセスしたとき、Deleteリンクがどのように出力されているかというと、ざっとこんなコードになります。
method="post" action="/members/delete/ID番号"と指定したフォームを用意し、<a>タグからこのフォームのsubmitを実行して送信していたのですね。では、deleteアクションを用意しましょう。下のリスト欄のように作成してください。
ここでも、データ削除の処理は非常に単純です。まず、Membersの「get」メソッドを使い、指定したIDのインスタンスだけを取り出します。
後は、Membersの「delete」メソッドを使い、getしたデータのインスタンスを削除するだけです。これも実に簡単ですね!
そうして、indexからviewにかけて、「検索したMembersに関連するMessagesを取得する」ようにデータを検索し、それをsaveしたりdeleteしたりりすれば、更新も削除も思うがまま、というわけですね。
――これで、Members側の基本処理はわかりました。次回は、Messages側の処理について考えてみます。
このリンクは、「/members/delete/ID番号」というアドレスにPOST送信するようになっています。ですから、deleteアクションに削除の処理を用意すれば、データの削除が行えるというわけです。
実際にindexにアクセスしたとき、Deleteリンクがどのように出力されているかというと、ざっとこんなコードになります。
<form name="post_xxx"
style="display:none;"
method="post"
action="/members/delete/ID番号">
<input type="hidden" name="_method"
value="POST"/>
</form>
<a href="#" onclick="if (confirm(○○))
{ document.post_xxx.submit(); }
event.returnValue = false;
return false;">Delete</a>
method="post" action="/members/delete/ID番号"と指定したフォームを用意し、<a>タグからこのフォームのsubmitを実行して送信していたのですね。では、deleteアクションを用意しましょう。下のリスト欄のように作成してください。
ここでも、データ削除の処理は非常に単純です。まず、Membersの「get」メソッドを使い、指定したIDのインスタンスだけを取り出します。
$member = $this->Members->get($id);
if ($this->Members->delete($member))……
後は、Membersの「delete」メソッドを使い、getしたデータのインスタンスを削除するだけです。これも実に簡単ですね!
そうして、indexからviewにかけて、「検索したMembersに関連するMessagesを取得する」ようにデータを検索し、それをsaveしたりdeleteしたりりすれば、更新も削除も思うがまま、というわけですね。
――これで、Members側の基本処理はわかりました。次回は、Messages側の処理について考えてみます。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
public function delete($id = null) { $this->request->allowMethod(['post', 'delete']); $member = $this->Members->get($id); if ($this->Members->delete($member)) { $this->Flash->success(__('The member has been deleted.')); } else { $this->Flash->error(__('The member could not be deleted. Please, try again.')); } return $this->redirect(['action' => 'index']); }
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る