(CakePHP2.x) アソシエーションを一時的に外すunbindModelの使い方

CakePHP

CakePHP

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 アソシエーション: モデル同士を繋ぐ

CakePHP2 実践入門 (WEB DB PRESS plus)

新品価格
¥3,110から
(2015/1/27 23:08時点)

スポンサードリンク

コメントを残す

サブコンテンツ

このページの先頭へ