Some array/object related fixes to hydration
This commit is contained in:
parent
580f21c41c
commit
6db507c465
@ -150,7 +150,8 @@ class Doctrine_ORM_Internal_Hydration_StandardHydrator extends Doctrine_ORM_Inte
|
|||||||
if (count($result) > 1 || count($result[0]) > 1) {
|
if (count($result) > 1 || count($result[0]) > 1) {
|
||||||
throw Doctrine_ORM_Exceptions_HydrationException::nonUniqueResult();
|
throw Doctrine_ORM_Exceptions_HydrationException::nonUniqueResult();
|
||||||
}
|
}
|
||||||
return array_shift($this->_gatherScalarRowData($result[0], $cache));
|
$result = $this->_gatherScalarRowData($result[0], $cache);
|
||||||
|
return array_shift($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process result set
|
// Process result set
|
||||||
@ -245,9 +246,14 @@ class Doctrine_ORM_Internal_Hydration_StandardHydrator extends Doctrine_ORM_Inte
|
|||||||
$driver->getReferenceValue($baseElement, $relationAlias));
|
$driver->getReferenceValue($baseElement, $relationAlias));
|
||||||
}
|
}
|
||||||
} else if ( ! isset($baseElement[$relationAlias])) {
|
} else if ( ! isset($baseElement[$relationAlias])) {
|
||||||
|
if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY) {
|
||||||
|
$array = array();
|
||||||
|
$driver->setRelatedElement($baseElement, $relationAlias, $array);
|
||||||
|
} else {
|
||||||
$driver->setRelatedElement($baseElement, $relationAlias,
|
$driver->setRelatedElement($baseElement, $relationAlias,
|
||||||
$driver->getElementCollection($entityName));
|
$driver->getElementCollection($entityName));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// x-1 relation
|
// x-1 relation
|
||||||
$oneToOne = true;
|
$oneToOne = true;
|
||||||
@ -260,9 +266,16 @@ class Doctrine_ORM_Internal_Hydration_StandardHydrator extends Doctrine_ORM_Inte
|
|||||||
$driver->getElement($data, $entityName));
|
$driver->getElement($data, $entityName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY) {
|
||||||
if (($coll =& $driver->getReferenceValue($baseElement, $relationAlias)) !== null) {
|
if (($coll =& $driver->getReferenceValue($baseElement, $relationAlias)) !== null) {
|
||||||
$this->_updateResultPointer($resultPointers, $coll, $index, $dqlAlias, $oneToOne);
|
$this->_updateResultPointer($resultPointers, $coll, $index, $dqlAlias, $oneToOne);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (($coll = $driver->getReferenceValue($baseElement, $relationAlias)) !== null) {
|
||||||
|
$this->_updateResultPointer($resultPointers, $coll, $index, $dqlAlias, $oneToOne);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// append scalar values to mixed result sets
|
// append scalar values to mixed result sets
|
||||||
|
Loading…
x
Reference in New Issue
Block a user