(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

CakePHP2実践入門 (WEB+DB press plusシリーズ) [ 安藤祐介 ]

価格:3,110円
(2019/9/21 06:25時点)
感想(0件)

スポンサードリンク

コメントを残す

サブコンテンツ

このページの先頭へ