【CakePHP】アソシエーションの一時的な解除(unbindModel)

2019年7月29日

バージョン:CakePHP 2.2.2
モデルで「belongsTo」や「hasMany」などを指定している場合に、
一時的にアソシエーションを解除する場合はunbindModelを使用します。
既にアソシエーションを定義している時に、取得するデータ量を減らしたい場合などに有効です。

1
2
3
4
5
6
7
$this->モデル名->unbindModel(array(
            'hasOne'=>array('モデル名'),
            'hasMany'=>array('モデル名'),
            'belongsTo' => array('モデル名'),
            'hasAndBelongsToMany' => array('モデル名'),
            )
        );

下記のようにモデルを複数指定することもできます。

1
2
3
4
5
$this->モデル名->unbindModel(
            array(
                'hasMany'=>array('モデル名1','モデル名2'),
            )
        );

また、パラメーターにfalseを指定すると「unbindModel」で設定した情報が残ります。

1
2
3
4
5
6
$this->モデル名->unbindModel(
            array(
                'hasMany'=>array('モデル名1','モデル名2'),
            ),
            ,false
        );

※アソシエーションを追加したい場合にはbindModelを使用します。
▽参考
公式ドキュメント(アソシエーション: モデル同士を繋ぐ)

スポンサーリンク