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()); }