findでassociationを動的に。containable behaviorが便利だった CakePHP2.x

Findする際に取得するassociationを変更したい。

Model->recurcive = 2 とかしちゃうとものすごい量のデータを取得してしまうので。
わちゃわちゃコード書かないといけないと思ってたら便利なbehaviorがあった。

containable behavior

$this->Post->Behaviors->attach('Containable');
$this->paginate = array('contain'=>array('Comment'=>array('User')));
$this->set('posts', $this->Paginator->paginate());

これでポスト一覧->コメント一覧->コメント書いたユーザー
といったrecurcive = 2 までのデータ取得が可能。

マニュアルを見ると特定のフィールドのみ取得とかも簡単に出来そう。