Changeset 3631

Show
Ignore:
Timestamp:
01/25/08 07:41:09 (18 months ago)
Author:
dbrewer
Message:

#749: fixed a problem with r3630: subclass inheritance map in parseData
is now properly maintained for each alias.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/0.9/lib/Doctrine/Hydrate.php

    r3630 r3631  
    10561056        // large result sets can be quite expensive. 
    10571057        // So for efficiency we use little listener caching here 
     1058        // 
     1059        // We also cache information about subclasses of the involved tables, 
     1060        // because  
     1061 
    10581062        foreach ($this->_aliasMap as $alias => $data) { 
    10591063            $componentName = $data['table']->getComponentName(); 
     
    10651069             
    10661070            $subclassMap[$alias] = array(); 
    1067             $subclassInheritanceMap = array(); 
     1071            $subclassInheritanceMap[$alias] = array(); 
    10681072             
    10691073            // cache record listeners for subclasses of all involved tables 
     
    10751079                        $subclass_table = $this->_conn->getTable($subclass); 
    10761080                        $listeners[$subclass] = $subclass_table->getRecordListener(); 
    1077                         $subclassInheritanceMap[$subclass] = $subclass_table->inheritanceMap; 
     1081                        $subclassInheritanceMap[$alias][$subclass] = $subclass_table->getOption('inheritanceMap'); 
    10781082                    } 
    10791083               } 
    10801084            } 
    10811085        } 
    1082  
    10831086        while ($data = $stmt->fetch(Doctrine::FETCH_ASSOC)) { 
    10841087            $currData  = array(); 
     
    11231126            $componentName = false; 
    11241127            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) { 
    11271130                        if (isset($currData[$rootAlias][$key]) && $currData[$rootAlias][$key] == $value) { 
    11281131                            $subclass_table = $this->_conn->getTable($subclass);