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'];
$type = $cacheKeyInfo['type'];
var_dump($dqlAlias);
var_dump($cacheKeyInfo);
echo "\n\n\n";
if(
isset($cacheKeyInfo['discriminatorColumn']) &&
isset($data[$cacheKeyInfo['discriminatorColumn']]) &&
$data[$cacheKeyInfo['discriminatorColumn']] != $cacheKeyInfo['discriminatorValue']
){
break;
}
// 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.
// 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;
}
$rowData['data'][$dqlAlias][$fieldName] = $type
? $type->convertToPHPValue($value, $this->_platform)
: $value;
@ -379,13 +382,23 @@ abstract class AbstractHydrator
$classMetadata = $this->getClassMetadata($this->_rsm->declaringClasses[$key]);
$fieldName = $this->_rsm->fieldMappings[$key];
$fieldMapping = $classMetadata->fieldMappings[$fieldName];
$ownerMap = $this->_rsm->columnOwnerMap[$key];
return $this->_cache[$key] = [
'isIdentifier' => in_array($fieldName, $classMetadata->identifier),
'fieldName' => $fieldName,
'type' => Type::getType($fieldMapping['type']),
'dqlAlias' => $this->_rsm->columnOwnerMap[$key],
$returnArray = [
'isIdentifier' => in_array($fieldName, $classMetadata->identifier),
'fieldName' => $fieldName,
'type' => Type::getType($fieldMapping['type']),
'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])):
// 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);
$dataMap = [
$contractA->id => $contractAData,
$contractB->id => $contractBData
];
$contracts = $repository->createQueryBuilder('p')
->getQuery()->getResult();
->where('p.id IN(:ids)')
->setParameter('ids', array_keys($dataMap))
->getQuery()->getResult();
foreach( $contracts as $contract ){
switch( $contract->id ){
case $contractA->id:
static::assertEquals($contract->originalData, $contractAData);
break;
case $contractB->id:
static::assertEquals($contract->originalData, $contractBData);
break;
}
static::assertEquals($contract->originalData, $dataMap[$contract->id], 'contract ' . get_class($contract) . ' not equals to original');
}
}
@ -92,8 +91,6 @@ class DDC6303Test extends \Doctrine\Tests\OrmFunctionalTestCase
->setParameter('ids', array_keys($dataMap))
->getQuery()->getResult();
foreach( $contracts as $contract ){
static::assertEquals($contract->originalData, $dataMap[$contract->id], 'contract ' . get_class($contract) . ' not equals to original');
}