diff --git a/lib/Doctrine/ORM/Internal/Hydration/SimpleObjectHydrator.php b/lib/Doctrine/ORM/Internal/Hydration/SimpleObjectHydrator.php index abd29e76f..249b60462 100644 --- a/lib/Doctrine/ORM/Internal/Hydration/SimpleObjectHydrator.php +++ b/lib/Doctrine/ORM/Internal/Hydration/SimpleObjectHydrator.php @@ -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; } } } diff --git a/tests/Doctrine/Tests/ORM/Hydration/SimpleObjectHydratorTest.php b/tests/Doctrine/Tests/ORM/Hydration/SimpleObjectHydratorTest.php index 80f90e7ff..400b5829f 100644 --- a/tests/Doctrine/Tests/ORM/Hydration/SimpleObjectHydratorTest.php +++ b/tests/Doctrine/Tests/ORM/Hydration/SimpleObjectHydratorTest.php @@ -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); + } }