Skip to content
Snippets Groups Projects
Commit d22ad2ab authored by Tim Steiner's avatar Tim Steiner
Browse files

Added eager loading to CourseCrosslistings

parent 5994a122
No related branches found
No related tags found
No related merge requests found
......@@ -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;
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment