在以下代码中,可包含的行为与我在 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
在模型中使用,而不是在每个函数中动态加载行为,但这并没有帮助。
如果我遗漏了一些简单的东西,我深表歉意。提前致谢!