CakePHP 注意事項メモ

$recursiveはモデルのメンバー変数である。
よって、一度変更すると値を保持します。

なので、1度目はアソシエーションをしないで、2度目はアソシエーションをしたい場合などは、注意が必要

$this->Community->recursive = -1;
pr($this->Community->findAll());     // アソシエーションなし
$this->Community->recursive = 1;
pr($this->Community->findAll());     // アソシエーションあり

例えば、モデルの関数などで、設定するとかなり注意、バグがある場合、デバックきついです。

   public function test1(){
       $this->recursive = -1;   // アソシエーションなしの設定
       pr($this->findAll());
   }
   public function test2(){
       pr($this->findAll());
   }

コントローラで

       $this->Community->test1();  // アソシエーションなしを期待
       $this->Community->test2();  // アソシエーションありを期待

当然ですがtest1、test2共にアソシエーションなしになります。
なので、モデルで設定する場合は、最後に設定を戻しましょう

   public function test1(){
       $def_recursive   = $this->recursive; // はじめの値を保持する関数
       $this->recursive = -1;            // アソシエーションなしの設定
       pr($this->findAll());
       $this->recursive = $def_recursive;  // 設定戻す。
   }
   public function test2(){
       pr($this->findAll());
   }