From 81f8aa2cf996613c975efed240417eb34c4c2779 Mon Sep 17 00:00:00 2001 From: Tim Steiner <tsteiner2@unl.edu> Date: Wed, 31 Oct 2007 20:32:08 +0000 Subject: [PATCH] Add one eagerloaded row to CourseGenerations --- .../models/tables/CourseGenerations.php | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/application/models/tables/CourseGenerations.php b/application/models/tables/CourseGenerations.php index 5b3ba0a8..29d83369 100644 --- a/application/models/tables/CourseGenerations.php +++ b/application/models/tables/CourseGenerations.php @@ -145,6 +145,63 @@ class CourseGenerations extends Nmc_Db_Table $childGenerations = $this->fetchAll($where); return $childGenerations; } + + public function fetchAll($where = null, $order = null, $count = null, $offset = null) + { + $select = $this->getAdapter()->select(); + + $assetsTable = Assets::getInstance(); + $assetsTableInfo = $assetsTable->info(); + $detailsTable = CourseDetails::getInstance(); + $detailsTableInfo = $detailsTable->info(); + + $select->from($this->getTableName()); + $select->join($detailsTable->getTableName(), + $this->getTableName() . '.' . $this->getPrimaryKeyName() . '=' + . $detailsTable->getTableName() . '.generation'); + $select->join($assetsTable->getTableName(), + $this->getTableName() . '.assetId = ' + . $assetsTable->getTableName() . '.' . $assetsTable->getPrimaryKeyName()); + $select->where($where); + $select->order($order); + $select->limit($count, $offset); + + $resultData = $this->_db->fetchAll($select); + + $config = array(); + $config['db'] = $this->_db; + $config['table'] = $this; + $config['data'] = array(); + $config['eagerData'] = array(); + + foreach ($resultData as $resultDatum) { + $config['data'][] = array_intersect_key($resultDatum, array_flip($this->_cols)); + + $eagerData = array(); + $eagerData['db'] = $assetsTable->getAdapter(); + $eagerData['table'] = $assetsTable; + $eagerData['data'] = array_intersect_key($resultDatum, array_flip($assetsTableInfo['cols'])); + + $eagerAssetRow = new Asset($eagerData); + + $eagerData = array(); + $eagerData['db'] = $detailsTable->getAdapter(); + $eagerData['table'] = $detailsTable; + $eagerData['data'] = array_intersect_key($resultDatum, array_flip($detailsTableInfo['cols'])); + + $eagerDetailRow = new CourseDetail($eagerData); + + $config['eagerData'][] = array('asset' => $eagerAssetRow, + 'courseDetail' => $eagerDetailRow); + } + + $rowsetClass = $this->_rowsetClass; + $rowset = new $rowsetClass($config); + + return $rowset; + + return parent::fetchAll($where, $order, $count, $offset); + } } ?> \ No newline at end of file -- GitLab