diff --git a/lib/Doctrine/ORM/Query/ResultSetMapping.php b/lib/Doctrine/ORM/Query/ResultSetMapping.php index 50dacea41..b06b68385 100644 --- a/lib/Doctrine/ORM/Query/ResultSetMapping.php +++ b/lib/Doctrine/ORM/Query/ResultSetMapping.php @@ -211,7 +211,7 @@ class ResultSetMapping { $found = false; - foreach ($this->fieldMappings as $columnName => $columnFieldName) { + foreach (array_merge($this->metaMappings, $this->fieldMappings) as $columnName => $columnFieldName) { if ( ! ($columnFieldName === $fieldName && $this->columnOwnerMap[$columnName] === $alias)) continue; $this->addIndexByColumn($alias, $columnName); diff --git a/tests/Doctrine/Tests/ORM/Hydration/ResultSetMappingTest.php b/tests/Doctrine/Tests/ORM/Hydration/ResultSetMappingTest.php index 801937f2d..5a198a944 100644 --- a/tests/Doctrine/Tests/ORM/Hydration/ResultSetMappingTest.php +++ b/tests/Doctrine/Tests/ORM/Hydration/ResultSetMappingTest.php @@ -255,5 +255,18 @@ class ResultSetMappingTest extends \Doctrine\Tests\OrmTestCase $this->assertEquals('Doctrine\Tests\Models\CMS\CmsUser', $rsm->getDeclaringClass('status')); $this->assertEquals('Doctrine\Tests\Models\CMS\CmsUser', $rsm->getDeclaringClass('username')); } + public function testIndexByMetadataColumn() + { + $rms = $this->_rsm; + $rms->addEntityResult('Doctrine\Tests\Models\Legacy\LegacyUser', 'u') + ->addJoinedEntityResult('Doctrine\Tests\Models\Legacy', 'lu', 'u', '_references') + ->addMetaResult('lu', '_source', '_source', true) + ->addMetaResult('lu', '_target', '_target', true) + ->addIndexBy('lu', '_source'); + + + $this->assertTrue($rms->hasIndexBy('lu')); + + } }