新しいフォルダー

気になったことや勉強したことについて書いていきます

cakePHP BAKE使用時のdeleteメソッド その1

BAKEで生成されたコントローラーを使ってdeleteメソッドを呼ぶと

コントローラー内でMODELにセットされたID(PKEY)をDELETE完了後に消してしまうので

IDを取得しておきたい場合はDELETEメソッドが走る前に変数に退避する必要がある。

**************

XXXXController.php

public function delete($id = null){

  //モデルに削除対象のIDをセット

  $this->テーブル名->id = $id

  【略】

  //引数無しでメソッドを呼ぶ

  $this->テーブル名->delete();

}

lib/Cake/Model/Model.php

public function delete($id = null, $cascade = true) {
  if (!empty($id)) {
   $this->id = $id;
  }

  //自身のメンバーからIDを取得

  $id = $this->id;

  【略】 

   $this->_clearCache();

  //正常終了直前にfalseを代入している 

  $this->id = false;

  return true;

**************

以下メモ

SAVEやDELETEの前後に処理を入れる場合はビヘイビアを使おう。

モデルに割り当てられたビヘイビアは自動的にコールバックが呼ばれます。 そのコールバックはモデルで見られるものと似ています: beforeFindafterFindbeforeSaveafterSavebeforeDeleteafterDeleteonError