use dataMap also in first test function
This commit is contained in:
parent
6d40859228
commit
ad3b9de4b8
@ -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!
|
||||||
|
@ -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');
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user