Changeset 3631
- Timestamp:
- 01/25/08 07:41:09 (18 months ago)
- Files:
-
- 1 modified
-
branches/0.9/lib/Doctrine/Hydrate.php (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/0.9/lib/Doctrine/Hydrate.php
r3630 r3631 1056 1056 // large result sets can be quite expensive. 1057 1057 // So for efficiency we use little listener caching here 1058 // 1059 // We also cache information about subclasses of the involved tables, 1060 // because 1061 1058 1062 foreach ($this->_aliasMap as $alias => $data) { 1059 1063 $componentName = $data['table']->getComponentName(); … … 1065 1069 1066 1070 $subclassMap[$alias] = array(); 1067 $subclassInheritanceMap = array();1071 $subclassInheritanceMap[$alias] = array(); 1068 1072 1069 1073 // cache record listeners for subclasses of all involved tables … … 1075 1079 $subclass_table = $this->_conn->getTable($subclass); 1076 1080 $listeners[$subclass] = $subclass_table->getRecordListener(); 1077 $subclassInheritanceMap[$ subclass] = $subclass_table->inheritanceMap;1081 $subclassInheritanceMap[$alias][$subclass] = $subclass_table->getOption('inheritanceMap'); 1078 1082 } 1079 1083 } 1080 1084 } 1081 1085 } 1082 1083 1086 while ($data = $stmt->fetch(Doctrine::FETCH_ASSOC)) { 1084 1087 $currData = array(); … … 1123 1126 $componentName = false; 1124 1127 foreach ($subclassMap[$rootAlias] as $subclass) { 1125 if ( array_key_exists($subclass, $subclassInheritanceMap)) {1126 foreach ($subclassInheritanceMap[$ subclass] as $key => $value) {1128 if (isset($subclassInheritanceMap[$rootAlias][$subclass])) { 1129 foreach ($subclassInheritanceMap[$rootAlias][$subclass] as $key => $value) { 1127 1130 if (isset($currData[$rootAlias][$key]) && $currData[$rootAlias][$key] == $value) { 1128 1131 $subclass_table = $this->_conn->getTable($subclass);