Skip to content

Commit

Permalink
Merge pull request #1377 from fprochazka/bugfix/paginator
Browse files Browse the repository at this point in the history
LimitSubqueryOutputWalker: fix aliasing of property in OrderBy from MappedSuperclass
  • Loading branch information
Bill Schaller committed Apr 9, 2015
2 parents 2c90930 + e501137 commit 3f84be7
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,9 @@ private function rebuildOrderByClauseForOuterScope(OrderByClause $orderByClause)
// Field was declared in a parent class, so we need to get the proper SQL table alias
// for the joined parent table.
$otherClassMetadata = $this->em->getClassMetadata($fieldMapping['declared']);
$sqlTableAliasForFieldAlias = $this->getSQLTableAlias($otherClassMetadata->getTableName(), $dqlAliasForFieldAlias);
if (!$otherClassMetadata->isMappedSuperclass) {
$sqlTableAliasForFieldAlias = $this->getSQLTableAlias($otherClassMetadata->getTableName(), $dqlAliasForFieldAlias);
}
}

// Compose search/replace patterns
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,5 +350,24 @@ public function testLimitSubqueryWithOrderByAndSubSelectInWhereClausePgSql()
$query->getSQL()
);
}

/**
* This tests ordering by property that has the 'declared' field.
*/
public function testLimitSubqueryOrderByFieldFromMappedSuperclass()
{
$this->entityManager->getConnection()->setDatabasePlatform(new MySqlPlatform());

// now use the third one in query
$query = $this->entityManager->createQuery(
'SELECT b FROM Doctrine\Tests\ORM\Tools\Pagination\Banner b ORDER BY b.id DESC'
);
$query->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, 'Doctrine\ORM\Tools\Pagination\LimitSubqueryOutputWalker');

$this->assertEquals(
'SELECT DISTINCT id_0 FROM (SELECT b0_.id AS id_0, b0_.name AS name_1 FROM Banner b0_) dctrn_result ORDER BY id_0 DESC',
$query->getSQL()
);
}
}

21 changes: 20 additions & 1 deletion tests/Doctrine/Tests/ORM/Tools/Pagination/PaginationTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -168,4 +168,23 @@ class Avatar
public $image_width;
/** @Column(type="string", length=255) */
public $image_alt_desc;
}
}

/** @MappedSuperclass */
abstract class Identified
{
/** @Id @Column(type="integer") @GeneratedValue */
private $id;

public function getId()
{
return $this->id;
}
}

/** @Entity */
class Banner extends Identified
{
/** @Column(type="string") */
public $name;
}

0 comments on commit 3f84be7

Please sign in to comment.