@@ -82,6 +82,7 @@ private function addSearchClause(QueryBuilder $queryBuilder, SearchDto $searchDt
8282 ];
8383
8484 $ entitiesAlreadyJoined = [];
85+ $ entityAliases = [];
8586 $ configuredSearchableProperties = $ searchDto ->getSearchableProperties ();
8687 $ searchableProperties = (null === $ configuredSearchableProperties || 0 === \count ($ configuredSearchableProperties )) ? $ entityDto ->getAllPropertyNames () : $ configuredSearchableProperties ;
8788 foreach ($ searchableProperties as $ propertyName ) {
@@ -101,13 +102,16 @@ private function addSearchClause(QueryBuilder $queryBuilder, SearchDto $searchDt
101102 $ associatedEntityAlias = $ associatedPropertyName = '' ;
102103 for ($ i = 0 ; $ i < $ numAssociatedProperties - 1 ; ++$ i ) {
103104 $ associatedEntityName = $ associatedProperties [$ i ];
104- $ associatedEntityAlias = Escaper::escapeDqlAlias ($ associatedEntityName );
105+ $ associatedEntityPath = implode ('. ' , \array_slice ($ associatedProperties , 0 , $ i +1 ));
106+ $ associatedEntityAlias = '__ea_alias_ ' .\count ($ entityAliases );
107+ $ entityAliases [$ associatedEntityPath ] = $ associatedEntityAlias ;
105108 $ associatedPropertyName = $ associatedProperties [$ i + 1 ];
106109
107- if (!\in_array ($ associatedEntityName , $ entitiesAlreadyJoined , true )) {
108- $ parentEntityName = 0 === $ i ? 'entity ' : $ associatedProperties [$ i - 1 ];
110+ if (!\in_array ($ associatedEntityPath , $ entitiesAlreadyJoined , true )) {
111+ $ associatedEntityParentPath = implode ('. ' , \array_slice ($ associatedProperties , 0 , $ i ));
112+ $ parentEntityName = 0 === $ i ? 'entity ' : $ entityAliases [$ associatedEntityParentPath ];
109113 $ queryBuilder ->leftJoin ($ parentEntityName .'. ' .$ associatedEntityName , $ associatedEntityAlias );
110- $ entitiesAlreadyJoined [] = $ associatedEntityName ;
114+ $ entitiesAlreadyJoined [] = $ associatedEntityPath ;
111115 }
112116
113117 if ($ i < $ numAssociatedProperties - 2 ) {
0 commit comments