
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
);
これでアクション内では
アソシエーションを外したままで使用できます。
