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

use dataMap also in first test function

This commit is contained in:
Full 2017-03-04 17:17:31 +01:00 committed by Marco Pivetta
parent 6d40859228
commit ad3b9de4b8
No known key found for this signature in database
GPG Key ID: 4167D3337FD9D629
2 changed files with 33 additions and 23 deletions

View File

@ -294,17 +294,20 @@ abstract class AbstractHydrator
$dqlAlias = $cacheKeyInfo['dqlAlias']; $dqlAlias = $cacheKeyInfo['dqlAlias'];
$type = $cacheKeyInfo['type']; $type = $cacheKeyInfo['type'];
var_dump($dqlAlias); if(
var_dump($cacheKeyInfo); isset($cacheKeyInfo['discriminatorColumn']) &&
echo "\n\n\n"; isset($data[$cacheKeyInfo['discriminatorColumn']]) &&
$data[$cacheKeyInfo['discriminatorColumn']] != $cacheKeyInfo['discriminatorValue']
){
break;
}
// in an inheritance hierarchy the same field could be defined several times. // in an inheritance hierarchy the same field could be defined several times.
// We overwrite this value so long we don't have a non-null value, that value we keep. // We overwrite this value so long we don't have a non-null value, that value we keep.
// Per definition it cannot be that a field is defined several times and has several values. // Per definition it cannot be that a field is defined several times and has several values.
if (!empty($rowData['data'][$dqlAlias][$fieldName])) { if (isset($rowData['data'][$dqlAlias][$fieldName])) {
break; break;
} }
$rowData['data'][$dqlAlias][$fieldName] = $type $rowData['data'][$dqlAlias][$fieldName] = $type
? $type->convertToPHPValue($value, $this->_platform) ? $type->convertToPHPValue($value, $this->_platform)
: $value; : $value;
@ -379,13 +382,23 @@ abstract class AbstractHydrator
$classMetadata = $this->getClassMetadata($this->_rsm->declaringClasses[$key]); $classMetadata = $this->getClassMetadata($this->_rsm->declaringClasses[$key]);
$fieldName = $this->_rsm->fieldMappings[$key]; $fieldName = $this->_rsm->fieldMappings[$key];
$fieldMapping = $classMetadata->fieldMappings[$fieldName]; $fieldMapping = $classMetadata->fieldMappings[$fieldName];
$ownerMap = $this->_rsm->columnOwnerMap[$key];
return $this->_cache[$key] = [ $returnArray = [
'isIdentifier' => in_array($fieldName, $classMetadata->identifier), 'isIdentifier' => in_array($fieldName, $classMetadata->identifier),
'fieldName' => $fieldName, 'fieldName' => $fieldName,
'type' => Type::getType($fieldMapping['type']), 'type' => Type::getType($fieldMapping['type']),
'dqlAlias' => $this->_rsm->columnOwnerMap[$key], 'dqlAlias' => $ownerMap,
]; ];
if( !empty($classMetadata->parentClasses)){
$returnArray += [
'discriminatorColumn' => $this->_rsm->discriminatorColumns[$ownerMap],
'discriminatorValue' => $classMetadata->discriminatorValue
];
}
return $this->_cache[$key] = $returnArray;
case (isset($this->_rsm->newObjectMappings[$key])): case (isset($this->_rsm->newObjectMappings[$key])):
// WARNING: A NEW object is also a scalar, so it must be declared before! // WARNING: A NEW object is also a scalar, so it must be declared before!

View File

@ -38,19 +38,18 @@ class DDC6303Test extends \Doctrine\Tests\OrmFunctionalTestCase
$repository = $this->_em->getRepository(DDC6303Contract::class); $repository = $this->_em->getRepository(DDC6303Contract::class);
$dataMap = [
$contractA->id => $contractAData,
$contractB->id => $contractBData
];
$contracts = $repository->createQueryBuilder('p') $contracts = $repository->createQueryBuilder('p')
->getQuery()->getResult(); ->where('p.id IN(:ids)')
->setParameter('ids', array_keys($dataMap))
->getQuery()->getResult();
foreach( $contracts as $contract ){ foreach( $contracts as $contract ){
switch( $contract->id ){ static::assertEquals($contract->originalData, $dataMap[$contract->id], 'contract ' . get_class($contract) . ' not equals to original');
case $contractA->id:
static::assertEquals($contract->originalData, $contractAData);
break;
case $contractB->id:
static::assertEquals($contract->originalData, $contractBData);
break;
}
} }
} }
@ -92,8 +91,6 @@ class DDC6303Test extends \Doctrine\Tests\OrmFunctionalTestCase
->setParameter('ids', array_keys($dataMap)) ->setParameter('ids', array_keys($dataMap))
->getQuery()->getResult(); ->getQuery()->getResult();
foreach( $contracts as $contract ){ foreach( $contracts as $contract ){
static::assertEquals($contract->originalData, $dataMap[$contract->id], 'contract ' . get_class($contract) . ' not equals to original'); static::assertEquals($contract->originalData, $dataMap[$contract->id], 'contract ' . get_class($contract) . ' not equals to original');
} }