1
0
mirror of synced 2025-02-02 21:41:45 +03:00

Extract private method to retrieve discriminator values

This commit is contained in:
Luís Cobucci 2018-02-19 11:05:30 +01:00
parent 2905b435db
commit f2da5bc93e
No known key found for this signature in database
GPG Key ID: EC61C5F01750ED3C

View File

@ -396,21 +396,12 @@ abstract class AbstractHydrator
// the current discriminator value must be saved in order to disambiguate fields hydration, // the current discriminator value must be saved in order to disambiguate fields hydration,
// should there be field name collisions // should there be field name collisions
if ($classMetadata->parentClasses && isset($this->_rsm->discriminatorColumns[$ownerMap])) { if ($classMetadata->parentClasses && isset($this->_rsm->discriminatorColumns[$ownerMap])) {
$discriminatorValues = array_map(
function (string $subClass) : string {
return (string) $this->getClassMetadata($subClass)->discriminatorValue;
},
$classMetadata->subClasses
);
$discriminatorValues[] = (string) $classMetadata->discriminatorValue;
return $this->_cache[$key] = \array_merge( return $this->_cache[$key] = \array_merge(
$columnInfo, $columnInfo,
[ [
'discriminatorColumn' => $this->_rsm->discriminatorColumns[$ownerMap], 'discriminatorColumn' => $this->_rsm->discriminatorColumns[$ownerMap],
'discriminatorValue' => $classMetadata->discriminatorValue, 'discriminatorValue' => $classMetadata->discriminatorValue,
'discriminatorValues' => $discriminatorValues, 'discriminatorValues' => $this->getDiscriminatorValues($classMetadata),
] ]
); );
} }
@ -463,6 +454,23 @@ abstract class AbstractHydrator
return null; return null;
} }
/**
* @return string[]
*/
private function getDiscriminatorValues(ClassMetadata $classMetadata) : array
{
$values = array_map(
function (string $subClass) : string {
return (string) $this->getClassMetadata($subClass)->discriminatorValue;
},
$classMetadata->subClasses
);
$values[] = (string) $classMetadata->discriminatorValue;
return $values;
}
/** /**
* Retrieve ClassMetadata associated to entity class name. * Retrieve ClassMetadata associated to entity class name.
* *