【发布时间】:2012-11-14 20:09:05
【问题描述】:
在模型“GradingPeriod”中声明了以下内容:
class GradingPeriod extends AppModel {
public $belongsTo = array('AcademicYear' => array('className' => 'AcademicYear', 'foreignKey' => 'academic_year_id'));
...
public function getEnrolledSections(){
$this->recursive = 1;
debug($this->findById(21)); // Does **not** return AcademicYear
// model data when function is called
// from a different model.
debug($this->findById(21)); // **Does** return AcademicYear
// model data when function is called
// from a different model.
die();
}
}
当从控制器或 GradingPeriod 模型内部调用时,它可以正常工作。第一个“find”调用确实返回 GradingPeriod 模型的关联数据(AcademicYear)。
当从不同的模型调用时,第一个“find”调用不会返回 GradingPeriod 模型的关联数据(AcademicYear)。第二个“find”调用确实返回 GradingPeriod 模型的关联数据(AcademicYear)。
class ReportCard extends AppModel {
public function callToGradingPeriod(){
$objGradingPeriod = ClassRegistry::init('GradingPeriod');
$objGradingPeriod->getEnrolledSections();
}
}
我已经在 CakePHP 2.1.2 和 2.2.3 上尝试过,结果相同。
我知道从另一个模型调用一个模型可能被认为是错误的形式,但是为什么这段代码会表现得这样呢?提前感谢您提供的任何帮助。
【问题讨论】:
-
在每个
findById()之前尝试debug($this->recursive); -
调试按预期返回
1。
标签: cakephp model cakephp-2.1