1
0
mirror of synced 2025-01-18 22:41:43 +03:00

Fix SimpleObjectHydrator behavior when column not exists in fieldMappings, relationMappings and metaMappings

This commit is contained in:
Norbert Orzechowicz 2013-02-28 10:10:28 +01:00
parent e5779a0756
commit f9519479fc
2 changed files with 28 additions and 1 deletions

View File

@ -176,10 +176,13 @@ class SimpleObjectHydrator extends AbstractHydrator
// One solution is to load the association, but it might require extra efforts.
return array('name' => $column);
default:
case (isset($this->_rsm->metaMappings[$column])):
return array(
'name' => $this->_rsm->metaMappings[$column]
);
default:
return null;
}
}
}

View File

@ -34,4 +34,28 @@ class SimpleObjectHydratorTest extends HydrationTestCase
$hydrator = new \Doctrine\ORM\Internal\Hydration\SimpleObjectHydrator($this->_em);
$hydrator->hydrateAll($stmt, $rsm);
}
public function testExtraFieldInResultSetShouldBeIgnore()
{
$rsm = new ResultSetMapping;
$rsm->addEntityResult('Doctrine\Tests\Models\CMS\CmsAddress', 'a');
$rsm->addFieldResult('a', 'a__id', 'id');
$rsm->addFieldResult('a', 'a__city', 'city');
$resultSet = array(
array(
'a__id' => '1',
'a__city' => 'Cracow',
'doctrine_rownum' => '1'
),
);
$expectedEntity = new \Doctrine\Tests\Models\CMS\CmsAddress();
$expectedEntity->id = 1;
$expectedEntity->city = 'Cracow';
$stmt = new HydratorMockStatement($resultSet);
$hydrator = new \Doctrine\ORM\Internal\Hydration\SimpleObjectHydrator($this->_em);
$result = $hydrator->hydrateAll($stmt, $rsm);
$this->assertEquals($result[0], $expectedEntity);
}
}