Skip to content

Commit

Permalink
Merge pull request #767 from doctrine/DDC-2627
Browse files Browse the repository at this point in the history
Fixing missing table aliases when using Many2Many persister.
  • Loading branch information
guilhermeblanco committed Aug 22, 2013
2 parents 44f9952 + 09d51f9 commit c399c77
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
10 changes: 7 additions & 3 deletions lib/Doctrine/ORM/Persisters/ManyToManyPersister.php
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ public function count(PersistentCollection $coll)
foreach ($joinColumns as $joinColumn) {
$columnName = $this->quoteStrategy->getJoinColumnName($joinColumn, $class, $this->platform);
$referencedName = $joinColumn['referencedColumnName'];
$conditions[] = $columnName . ' = ?';
$conditions[] = 't.' . $columnName . ' = ?';
$params[] = ($class->containsForeignIdentifier)
? $id[$class->getFieldForColumn($referencedName)]
: $id[$class->fieldNames[$referencedName]];
Expand Down Expand Up @@ -361,12 +361,13 @@ private function getJoinTableRestrictions(PersistentCollection $coll, $element,
$params = array();

foreach ($mapping['joinTableColumns'] as $joinTableColumn) {
$whereClauses[] = $joinTableColumn . ' = ?';
$whereClauses[] = ($addFilters ? 't.' : '') . $joinTableColumn . ' = ?';

if (isset($mapping['relationToTargetKeyColumns'][$joinTableColumn])) {
$params[] = ($targetClass->containsForeignIdentifier)
? $targetId[$targetClass->getFieldForColumn($mapping['relationToTargetKeyColumns'][$joinTableColumn])]
: $targetId[$targetClass->fieldNames[$mapping['relationToTargetKeyColumns'][$joinTableColumn]]];

continue;
}

Expand All @@ -377,9 +378,12 @@ private function getJoinTableRestrictions(PersistentCollection $coll, $element,
}

if ($addFilters) {
$quotedJoinTable .= ' t';

list($joinTargetEntitySQL, $filterSql) = $this->getFilterSql($filterMapping);

if ($filterSql) {
$quotedJoinTable .= ' t ' . $joinTargetEntitySQL;
$quotedJoinTable .= ' ' . $joinTargetEntitySQL;
$whereClauses[] = $filterSql;
}
}
Expand Down
2 changes: 1 addition & 1 deletion tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1595Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public function testIssue()
$entities = $entity1->getEntities()->count();

$this->assertEquals(
"SELECT COUNT(*) FROM entity1_entity2 t WHERE parent = ?",
"SELECT COUNT(*) FROM entity1_entity2 t WHERE t.parent = ?",
$sqlLogger->queries[count($sqlLogger->queries)]['sql']
);
}
Expand Down

0 comments on commit c399c77

Please sign in to comment.