在以下代码中,Containable的行为与CakePHP 2.1.2中的预期不符:
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
而不是动态加载每个函数中的行为,但这没有帮助。
答案 0 :(得分:1)
引用手册:
必须附加包含中使用的所有模型
从您的示例代码中不清楚您是否正在这样做。
这是该笔记的剩余部分:
您可以考虑将其附加到您的AppModel。