1
0
mirror of synced 2025-01-31 04:21:44 +03:00

DDC-644 - Fixed issue with undefined columns in ResultSetMapping by skipping them, added a functional test for modified limit query functionality

This commit is contained in:
Benjamin Eberlei 2010-07-28 21:50:25 +02:00
parent 86e24d373b
commit 553e93ae27
2 changed files with 36 additions and 0 deletions

View File

@ -184,6 +184,10 @@ abstract class AbstractHydrator
$cache[$key]['type'] = Type::getType($classMetadata->fieldMappings[$fieldName]['type']);
$cache[$key]['isIdentifier'] = $classMetadata->isIdentifier($fieldName);
$cache[$key]['dqlAlias'] = $this->_rsm->columnOwnerMap[$key];
} else if (!isset($this->_rsm->metaMappings[$key])) {
// this column is a left over, maybe from a LIMIT query hack for example in Oracle or DB2
// maybe from an additional column that has not been defined in a NativeQuery ResultSetMapping.
continue;
} else {
// Meta column (has meaning in relational schema only, i.e. foreign keys or discriminator columns).
$cache[$key]['isMetaColumn'] = true;

View File

@ -267,6 +267,38 @@ class QueryTest extends \Doctrine\Tests\OrmFunctionalTestCase
->getSingleScalarResult();
}
public function testModifiedLimitQuery()
{
for ($i = 0; $i < 5; $i++) {
$user = new CmsUser;
$user->name = 'Guilherme' . $i;
$user->username = 'gblanco' . $i;
$user->status = 'developer';
$this->_em->persist($user);
}
$this->_em->flush();
$this->_em->clear();
$data = $this->_em->createQuery('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u')
->setFirstResult(1)
->setMaxResults(2)
->getResult();
$this->assertEquals(2, count($data));
$this->assertEquals('gblanco1', $data[0]->username);
$this->assertEquals('gblanco2', $data[1]->username);
$data = $this->_em->createQuery('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u')
->setFirstResult(3)
->setMaxResults(2)
->getResult();
$this->assertEquals(2, count($data));
$this->assertEquals('gblanco3', $data[0]->username);
$this->assertEquals('gblanco4', $data[1]->username);
}
public function testSupportsQueriesWithEntityNamespaces()
{
$this->_em->getConfiguration()->addEntityNamespace('CMS', 'Doctrine\Tests\Models\CMS');