データの追加・更新・削除 (3/3)
作成:2011-11-28 08:07
更新:2011-12-06 19:47
更新:2011-12-06 19:47
■データを削除する
データの削除も、基本的な考え方はeditと同様です。IDを指定してアクセスすると、そのデータが表示されます。そのまま送信すると、そのIDのデータがテーブルから削除される、という具合です。
データの削除は、Modelクラスの「delete」で行うことができます。これは以下のような形で呼び出します。
この基本的な構造から考えれば、削除の仕組みはデータの更新に似ていることがわかるでしょう。実際の例として、下にサンプルを掲載しておきました。これは「del」アクションとして削除の機能を追加してあります。
ここでは、アクセス時に削除するIDをパラメータとして渡すようにしてあります。「〜/my_sample_datas/del/番号」という形で、最後に削除するID番号をつけてアクセスしてみてください。そのIDの名前がフォームに表示されます。これを確認し、削除して良ければそのままフォームを送信します。これでそのデータが削除されます。
ここでは、データの更新と同様、POST送信された場合に削除の処理をしています。この処理部分は、以下の1行だけです。
この他に、findと同様に条件を指定してデータを削除するメソッドも用意されています。以下のようなものです。
ただし、これはデータがいくつ見つかってもすべてまとめて削除してしまうので、扱いは注意しましょう。扱いを間違えると、誤って大事なデータをごっそり削除してしまう危険がありますから。
データの削除は、Modelクラスの「delete」で行うことができます。これは以下のような形で呼び出します。
$this->Modelクラス->delete( 削除するID , 真偽値 );第1引数に、削除するデータのIDを指定します。第2引数は、関連するデータを削除するかを示す真偽値です(これはデータのリレーションを行うようになると意味がわかります。今は深く考えなくてOKです)。
この基本的な構造から考えれば、削除の仕組みはデータの更新に似ていることがわかるでしょう。実際の例として、下にサンプルを掲載しておきました。これは「del」アクションとして削除の機能を追加してあります。
ここでは、アクセス時に削除するIDをパラメータとして渡すようにしてあります。「〜/my_sample_datas/del/番号」という形で、最後に削除するID番号をつけてアクセスしてみてください。そのIDの名前がフォームに表示されます。これを確認し、削除して良ければそのままフォームを送信します。これでそのデータが削除されます。
ここでは、データの更新と同様、POST送信された場合に削除の処理をしています。この処理部分は、以下の1行だけです。
$this->MySampleData->delete($this->deleteの引数に、$this->request->data('MySampleData.id')というようなものが指定されていますね。これで、送信されたフォームからIDの値が取得できます。Form Helperを使ってModel利用のフォームを生成すると、このようにdata('MySampleData.id')というように「モデル名.項目名」という形で送信されたフォームのデータが取得できます。後は、deleteで削除するだけです。
request->data('MySampleData.id'));
この他に、findと同様に条件を指定してデータを削除するメソッドも用意されています。以下のようなものです。
$this->Modelクラス->deleteAll( 条件設定 , 真偽値 );第1引数には、削除する項目の検索条件を設定します。つまり、findと同じように条件を指定してデータを検索し、見つかったものをすべて削除する、というわけです。検索条件の設定は、基本的にfindと同じです。
ただし、これはデータがいくつ見つかってもすべてまとめて削除してしまうので、扱いは注意しましょう。扱いを間違えると、誤って大事なデータをごっそり削除してしまう危険がありますから。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※del.ctp <h1>Edit Page</h1> <p>MySampleData Delete Form.</p> <?php echo $this->Form->create('MySampleData'); echo $this->Form->input('id'); echo $this->Form->input('name'); echo $this->Form->end('Submit'); ?> ※delメソッド public function del($id) { // レイアウト関係 $this->layout = "Sample"; $this->set("header_for_layout", "Sample Application"); $this->set("footer_for_layout", "copyright by SYODA-Tuyano. 2011."); $this->MySampleData->id = $id; // post時の処理 if ($this->request->is('post') || $this->request->is('put')) { $this->MySampleData->delete($this->request-> data('MySampleData.id')); } else { $this->request->data = $this->MySampleData->read(null, $id); } }
※関連コンテンツ
「初心者のためのCakePHP2 プログラミング入門」に戻る