以下はモデル「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) を返しません。2 番目の「find」呼び出しは、GradingPeriod モデルの関連データ (AcademicYear) を返します。
class ReportCard extends AppModel {
public function callToGradingPeriod(){
$objGradingPeriod = ClassRegistry::init('GradingPeriod');
$objGradingPeriod->getEnrolledSections();
}
}
CakePHP 2.1.2 と 2.2.3 でこれを試してみましたが、同じ結果が得られました。
あるモデルから別のモデルを呼び出すことは悪い形式と見なされる可能性があることは知っていますが、なぜこのコードはそのように動作するのでしょうか? ご提供いただけるご支援をよろしくお願いいたします。