Skip to content

Commit 05323b8

Browse files
CvekCodingantograssiot
authored andcommitted
Fixed join condition replacement with new aliases.
1 parent c4623c3 commit 05323b8

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,11 @@ private function getQueryBuilderWithNewAliases(QueryBuilder $queryBuilder, Query
149149
}
150150
$alias = substr($joinString, 0, $pos);
151151
$association = substr($joinString, $pos + 1);
152-
$condition = str_replace($aliases, $replacements, $joinPart->getCondition());
153-
$newAlias = QueryBuilderHelper::addJoinOnce($queryBuilderClone, $queryNameGenerator, $alias, $association, $joinPart->getJoinType(), $joinPart->getConditionType(), $condition, $originAlias);
152+
$newAlias = $queryNameGenerator->generateJoinAlias($association);
154153
$aliases[] = "{$joinPart->getAlias()}.";
155154
$replacements[] = "$newAlias.";
155+
$condition = str_replace($aliases, $replacements, $joinPart->getCondition());
156+
QueryBuilderHelper::addJoinOnce($queryBuilderClone, $queryNameGenerator, $alias, $association, $joinPart->getJoinType(), $joinPart->getConditionType(), $condition, $originAlias, $newAlias);
156157
}
157158

158159
$queryBuilderClone->add('where', str_replace($aliases, $replacements, (string) $wherePart));

src/Bridge/Doctrine/Orm/Util/QueryBuilderHelper.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ private function __construct()
3131
/**
3232
* Adds a join to the QueryBuilder if none exists.
3333
*/
34-
public static function addJoinOnce(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $alias, string $association, string $joinType = null, string $conditionType = null, string $condition = null, string $originAlias = null): string
34+
public static function addJoinOnce(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $alias, string $association, string $joinType = null, string $conditionType = null, string $condition = null, string $originAlias = null, string $newAlias = null): string
3535
{
3636
$join = self::getExistingJoin($queryBuilder, $alias, $association, $originAlias);
3737

3838
if (null !== $join) {
3939
return $join->getAlias();
4040
}
4141

42-
$associationAlias = $queryNameGenerator->generateJoinAlias($association);
42+
$associationAlias = $newAlias ?: $queryNameGenerator->generateJoinAlias($association);
4343
$query = "$alias.$association";
4444

4545
if (Join::LEFT_JOIN === $joinType || QueryChecker::hasLeftJoin($queryBuilder)) {

0 commit comments

Comments
 (0)