スポンサードリンク

CakePHPはアソシエーションで
モデルを自動的につなげてくれる
便利な機能なんですが、
時々使わないモデルを呼び出して
SQULクエリが多くなって
読み込みが遅くなったりします。
そんなときに一時的にアソシエーションを外すことができます。
スポンサードリンク
unbindModelを使う
アソシエーションを外したいときに
コントローラーのアクション内で
$this->Model->unbindModel(array( 'belongsTo' => array('Modelname'), 'hasMany' => array('Modelname'), 'hasAndBelongsToMany' => array('Modelname') ) );
上記の様に書きます。
こうするとfindなどでデータを取得するときに
アソシエーションを外した状態でデータを取ってくれます。
しかし、このままだと1回の使用しかできません。
アクション内でずっとアソシエーションを外したままにしたい場合は
第2引数にfalseをいれます。
自分のモデルの時は
第2引数にfalseを入れます。
$this->Model->unbindModel(array( 'belongsTo' => array('Modelname'), 'hasMany' => array('Modelname'), 'hasAndBelongsToMany' => array('Modelname') ),false );
これでアクション内では
アソシエーションを外したままで使用できます。
CakePHP Cookbook v2.x アソシエーション: モデル同士を繋ぐ
スポンサードリンク