在模型“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 模型内部调用时,这可以正常工作。第一个“查找”调用确实返回了 GradingPeriod 模型的关联数据 (AcademicYear)。
从不同的模型调用时,第一个“查找”调用不会返回 GradingPeriod 模型的关联数据 (AcademicYear)。第二个“查找”调用确实返回了 GradingPeriod 模型的关联数据 (AcademicYear)。
class ReportCard extends AppModel {
public function callToGradingPeriod(){
$objGradingPeriod = ClassRegistry::init('GradingPeriod');
$objGradingPeriod->getEnrolledSections();
}
}
我已经用 CakePHP 2.1.2 和 2.2.3 尝试过,结果相同。
我知道从另一个模型调用一个模型可能被认为是不好的形式,但是为什么这段代码会表现得如此呢?提前感谢您提供的任何帮助。