CakePHP Note (v1.3) > モデル > コールバック
コールバック
モデルやビヘイビアにはコールバックの仕組みが備わっています。FindやSaveなど特定の処理が行われる前後にコールバックメソッドが呼び出されます。ビヘイビア内のコールバックメソッドがモデルより先に呼ばれます。
コールバックメソッドを実装する事で特定の処理の間で特別な処理を行わせることができるようになります。
コールバックメソッド
- beforeFind
- afterFind
- beforeValidate
- beforeSave
- afterSave
- beforeDelete
- afterDelete
- onError
コールバックメソッドを実装するには、それぞれの引数と戻り値を知っておく必要があります。
beforeFind
このメソッドは検索の直前に実行されるメソッドです。findメソッドに渡したオプションを受け取って実行します。コールバックを実行後にfindメソッドを中断する場合はfalseを返します。findメソッドはコールバックから配列データが返ってきたらそれをオプションとして利用します。
function beforeFind($queryData){
    if(条件1){
        //キャッシュとか、カウントするとか、権限確認するとか、なんか処理し、findメソッドを継続させる
        return true;
    }elseif(条件2){
        //加工した$queryDataをfindメソッドに返して継続させる
        return $queryData;
    }
   //findメソッドを中断させる
    return false;
}
afterFind
このメソッドは検索の直後に実行されるメソッドです。findメソッドがDBから取得した結果を受け取って実行します。findメソッドはコールバックから返されたデータをそのままDBから取得した結果として返します。
function afterFind($results, $primary){
   //resultsを加工して返す。
    return $results;
}
beforeValidate
このメソッドは検証の直前に実行されるメソッドです。validatesメソッドに渡したオプションを受け取って実行します。コールバックを実行後にvalidatesメソッドを中断する場合はfalseを返します。