Skip to content

Commit 0988710

Browse files
committed
Issue #4041 bugfix: FilterEagerLoadingExtension foreign identifier handling
1 parent a5196ae commit 0988710

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/Bridge/Doctrine/Orm/Extension/FilterEagerLoadingExtension.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,16 @@ public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGenerator
7676
if (!$classMetadata->isIdentifierComposite) {
7777
$replacementAlias = $queryNameGenerator->generateJoinAlias($originAlias);
7878
$in = $this->getQueryBuilderWithNewAliases($queryBuilder, $queryNameGenerator, $originAlias, $replacementAlias);
79-
$in->select($replacementAlias);
80-
$queryBuilderClone->andWhere($queryBuilderClone->expr()->in($originAlias, $in->getDQL()));
79+
80+
if ($classMetadata->containsForeignIdentifier) {
81+
$identifier = current($classMetadata->getIdentifier());
82+
$in->select("IDENTITY($replacementAlias.$identifier)");
83+
$queryBuilderClone->andWhere($queryBuilderClone->expr()->in("$originAlias.$identifier", $in->getDQL()));
84+
} else {
85+
$in->select($replacementAlias);
86+
$queryBuilderClone->andWhere($queryBuilderClone->expr()->in($originAlias, $in->getDQL()));
87+
}
88+
8189
$changedWhereClause = true;
8290
} else {
8391
// Because Doctrine doesn't support WHERE ( foo, bar ) IN () (https://github.com/doctrine/doctrine2/issues/5238), we are building as many subqueries as they are identifiers

0 commit comments

Comments
 (0)