次のコードでは、CakePHP 2.1.2 で期待どおりに Containable が動作していません。
class ReportCard extends AppModel {
....
// debug shows expected results
public function test1(){
$this->Behaviors->attach('Containable');
$params = array(
'conditions' => array('ReportCard.id' => 1),
'contain' => array(
'ReportCardGradingPeriodCollection' => array(
'GradingPeriodCollection')));
debug($this->find('first', $params));
$this->Behaviors->detach('Containable');
}
// Unexpected: debug shows same array as test1
public function test2(){
$this->Behaviors->attach('Containable');
$params = array(
'conditions' => array('ReportCard.id' => 1),
'contain' => array(
'ReportCardGradingPeriodCollection' => array(
'GradingPeriodCollection' => array(
'GradingPeriodCollectionDetail' => array(
'GradingPeriod')))));
debug($this->find('first', $params));
$this->Behaviors->detach('Containable');
}
}
コントローラーから関数を呼び出すと、予期しない結果が得られます。test1()
予想される配列を示します。test2()
からの同じ配列を示しますtest1
。実行すると、期待どおりの結果が得られます (大きな配列、test2()
次にtest1()
小さな配列)。
class ReportCardsController extends AppController {
....
public function test(){
$this->ReportCard->test1();
$this->ReportCard->test2();
}
}
各関数で動作を動的にロードする代わりにモデルで使用しようとしactAs
ましたが、それは役に立ちませんでした。
簡単なものが欠けている場合は申し訳ありません。前もって感謝します!