diff --git a/application/models/rows/CourseCrosslisting.php b/application/models/rows/CourseCrosslisting.php index 9fd43c5d5dce1caf061099882759ed5edce853b9..ba065ce35b0d4555d03d3e793c82991356a774f6 100644 --- a/application/models/rows/CourseCrosslisting.php +++ b/application/models/rows/CourseCrosslisting.php @@ -8,12 +8,17 @@ class CourseCrosslisting extends Nmc_Db_Table_Row protected $_integratedStudies; protected $_courseCodeRow; - protected function _init() + protected function _init($config = array()) { - parent::_init(); + parent::_init($config); + + if ($config['eagerData']['courseCode'] instanceof CourseCode) { + $courseCode = $config['eagerData']['courseCode']; + } else { + $courseCode = CourseCodes::getInstance()->findOne($this->courseCode); + } $primaryKeyName = CourseCodes::getInstance()->getPrimaryKeyName(); - $courseCode = CourseCodes::getInstance()->findOne($this->courseCode); if($courseCode->$primaryKeyName) { $this->_subject = $courseCode->subject; $this->_courseNumber = $courseCode->courseNumber; diff --git a/application/models/tables/CourseCrosslistings.php b/application/models/tables/CourseCrosslistings.php index 7a647cf8529c20d550ee7651edcf280360a3b55f..72ba072b811f4b067ce04567c38183034873918d 100644 --- a/application/models/tables/CourseCrosslistings.php +++ b/application/models/tables/CourseCrosslistings.php @@ -111,24 +111,42 @@ class CourseCrosslistings extends Local_Db_CourseTableMany if($order) { $rowset = parent::fetchAll($where, $order, $count, $offset); } else { - $courseCodeTableName = CourseCodes::getInstance()->getTableName(); - $courseCodePrimary = CourseCodes::getInstance()->getPrimaryKeyName(); + $courseCodes = CourseCodes::getInstance(); + $courseCodeTableName = $courseCodes->getTableName(); + $courseCodePrimary = $courseCodes->getPrimaryKeyName(); + + $courseCodesInfo = $courseCodes->info(); + $courseCodesCols = $courseCodesInfo['cols']; $select = $this->_db->select(); $select->from($this->_name, '*'); $select->join($courseCodeTableName, $this->_name . '.courseCode = ' - . $courseCodeTableName . '.' . $courseCodePrimary, - array()); + . $courseCodeTableName . '.' . $courseCodePrimary); $select->where($where); $select->order(array('subject', 'courseNumber', 'courseLetter')); $select->limit($count, $offset); $resultData = $this->_db->fetchAll($select); + $config = array(); $config['db'] = $this->_db; $config['table'] = $this; - $config['data'] = $resultData; + $config['data'] = array(); + $config['eagerData'] = array(); + + foreach ($resultData as $resultDatum) { + $config['data'][] = array_intersect_key($resultDatum, array_flip($this->_cols)); + + $eagerData = array(); + $eagerData['db'] = $courseCodes->getAdapter(); + $eagerData['table'] = $courseCodes; + $eagerData['data'] = array_intersect_key($resultDatum, array_flip($courseCodesCols)); + + $eagerRow = new CourseCode($eagerData); + + $config['eagerData'][] = array('courseCode' => $eagerRow); + } $rowset = new Nmc_Db_Table_Rowset($config); } return $rowset;