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 までのデータ取得が可能。
マニュアルを見ると特定のフィールドのみ取得とかも簡単に出来そう。