src/Bridge/Doctrine/Orm/Extension/FilterEagerLoadingExtension.php
private function getQueryBuilderWithNewAliases(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $originAlias = 'o', string $replacement = 'o_2'): QueryBuilder
    {
        $queryBuilderClone = clone $queryBuilder;

        $joinParts = $queryBuilder->getDQLPart('join');
        $wherePart = $queryBuilder->getDQLPart('where');

        //reset parts
        $queryBuilderClone->resetDQLPart('join');
        $queryBuilderClone->resetDQLPart('where');
        $queryBuilderClone->resetDQLPart('orderBy');
        $queryBuilderClone->resetDQLPart('groupBy');
        $queryBuilderClone->resetDQLPart('having');

        //Change from alias
        $from = $queryBuilderClone->getDQLPart('from')[0];
        $queryBuilderClone->resetDQLPart('from');
        $queryBuilderClone->from($from->getFrom(), $replacement);

        $aliases = ["$originAlias."];
        $replacements = ["$replacement."];

        //Change join aliases
        foreach ($joinParts[$originAlias] as $joinPart) {
            /** @var Join $joinPart */
            $joinString = str_replace($aliases, $replacements, $joinPart->getJoin());
            $pos = strpos($joinString, '.');
            if (false === $pos) {
                if (null !== $joinPart->getCondition() && null !== $this->resourceClassResolver && $this->resourceClassResolver->isResourceClass($joinString)) {
                    $newAlias = $queryNameGenerator->generateJoinAlias($joinPart->getAlias());
                    $aliases[] = "{$joinPart->getAlias()}.";
                    $replacements[] = "$newAlias.";
                    $condition = str_replace($aliases, $replacements, $joinPart->getCondition());
                    $join = new Join($joinPart->getJoinType(), $joinPart->getJoin(), $newAlias, $joinPart->getConditionType(), $condition);
                    $queryBuilderClone->add('join', [$replacement => $join], true);
                }

                continue;
            }
            $alias = substr($joinString, 0, $pos);
            $association = substr($joinString, $pos + 1);
            $condition = str_replace($aliases, $replacements, $joinPart->getCondition());
            $newAlias = QueryBuilderHelper::addJoinOnce($queryBuilderClone, $queryNameGenerator, $alias, $association, $joinPart->getJoinType(), $joinPart->getConditionType(), $condition, $originAlias);
            $aliases[] = "{$joinPart->getAlias()}.";
            $replacements[] = "$newAlias.";
        }

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

        return $queryBuilderClone;
    }
private function getQueryBuilderWithNewAliases(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $originAlias = 'o', string $replacement = 'o_2'): QueryBuilder
    {
        $queryBuilderClone = clone $queryBuilder;

        $joinParts = $queryBuilder->getDQLPart('join');
        $wherePart = $queryBuilder->getDQLPart('where');

        //reset parts
        $queryBuilderClone->resetDQLPart('join');
        $queryBuilderClone->resetDQLPart('where');
        $queryBuilderClone->resetDQLPart('orderBy');
        $queryBuilderClone->resetDQLPart('groupBy');
        $queryBuilderClone->resetDQLPart('having');

        //Change from alias
        $from = $queryBuilderClone->getDQLPart('from')[0];
        $queryBuilderClone->resetDQLPart('from');
        $queryBuilderClone->from($from->getFrom(), $replacement);

        $aliases = ["$originAlias."];
        $replacements = ["$replacement."];

        //Change join aliases
        foreach ($joinParts[$originAlias] as $joinPart) {
            /** @var Join $joinPart */
            $joinString = str_replace($aliases, $replacements, $joinPart->getJoin());
            $pos = strpos($joinString, '.');
            if (false === $pos) {
                if (null !== $joinPart->getCondition() && null !== $this->resourceClassResolver && $this->resourceClassResolver->isResourceClass($joinString)) {
                    $newAlias = $queryNameGenerator->generateJoinAlias($joinPart->getAlias());
                    $aliases[] = "{$joinPart->getAlias()}.";
                    $replacements[] = "$newAlias.";
                    $condition = str_replace($aliases, $replacements, $joinPart->getCondition());
                    $join = new Join($joinPart->getJoinType(), $joinPart->getJoin(), $newAlias, $joinPart->getConditionType(), $condition);
                    $queryBuilderClone->add('join', [$replacement => $join], true);
                }

                continue;
            }
            $alias = substr($joinString, 0, $pos);
            $association = substr($joinString, $pos + 1);
            $condition = str_replace($aliases, $replacements, $joinPart->getCondition());
            $newAlias = QueryBuilderHelper::addJoinOnce($queryBuilderClone, $queryNameGenerator, $alias, $association, $joinPart->getJoinType(), $joinPart->getConditionType(), $condition, $originAlias);
            $aliases[] = "{$joinPart->getAlias()}.";
            $replacements[] = "$newAlias.";
        }

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

        return $queryBuilderClone;
    }
private function getQueryBuilderWithNewAliases ( QueryBuilder $ queryBuilder , QueryNameGeneratorInterface $ queryNameGenerator , string $ originAlias = 'o' , string $ replacement = 'o_2' ) : QueryBuilder { $ queryBuilderClone = clone $ queryBuilder ; $ joinParts = $ queryBuilder -> getDQLPart ( 'join' ) ; $ wherePart = $ queryBuilder -> getDQLPart ( 'where' ) ; //reset parts $ queryBuilderClone -> resetDQLPart ( 'join' ) ; $ queryBuilderClone -> resetDQLPart ( 'where' ) ; $ queryBuilderClone -> resetDQLPart ( 'orderBy' ) ; $ queryBuilderClone -> resetDQLPart ( 'groupBy' ) ; $ queryBuilderClone -> resetDQLPart ( 'having' ) ; //Change from alias $ from = $ queryBuilderClone -> getDQLPart ( 'from' ) [ 0 ] ; $ queryBuilderClone -> resetDQLPart ( 'from' ) ; $ queryBuilderClone -> from ( $ from -> getFrom ( ) , $ replacement ) ; $ aliases = [ "$originAlias." ] ; $ replacements = [ "$replacement." ] ; //Change join aliases foreach ( $ joinParts [ $ originAlias ] as $ joinPart ) { /** @var Join $joinPart */ $ joinString = str_replace ( $ aliases , $ replacements , $ joinPart -> getJoin ( ) ) ; $ pos = strpos ( $ joinString , '.' ) ; if ( false === $ pos ) { if ( null !== $ joinPart -> getCondition ( ) && null !== $ this -> resourceClassResolver && $ this -> resourceClassResolver -> isResourceClass ( $ joinString ) ) { $ newAlias = $ queryNameGenerator -> generateJoinAlias ( $ joinPart -> getAlias ( ) ) ; $ aliases [ ] = "{$joinPart->getAlias()}." ; $ replacements [ ] = "$newAlias." ; $ condition = str_replace ( $ aliases , $ replacements , $ joinPart -> getCondition ( ) ) ; $ join = new Join ( $ joinPart -> getJoinType ( ) , $ joinPart -> getJoin ( ) , $ newAlias , $ joinPart -> getConditionType ( ) , $ condition ) ; $ queryBuilderClone -> add ( 'join' , [ $ replacement => $ join ] , true ) ; } continue ; } $ alias = substr ( $ joinString , 0 , $ pos ) ; $ association = substr ( $ joinString , $ pos + 1 ) ; $ condition = str_replace ( $ aliases , $ replacements , $ joinPart -> getCondition ( ) ) ; $ newAlias = QueryBuilderHelper :: addJoinOnce ( $ queryBuilderClone , $ queryNameGenerator , $ alias , $ association , $ joinPart -> getJoinType ( ) , $ joinPart -> getConditionType ( ) , $ condition , $ originAlias ) ; $ aliases [ ] = "{$joinPart->getAlias()}." ; $ replacements [ ] = "$newAlias." ; } $ queryBuilderClone -> add ( 'where' , str_replace ( $ aliases , $ replacements , ( string ) $ wherePart ) ) ; return $ queryBuilderClone ; }
Returns a clone of the given query builder where everything gets re-aliased.

@param string $originAlias the base alias
@param string $replacement the replacement for the base alias, will change the from alias
Returns a clone of the given query builder where everything gets re - aliased .