@@ -44,7 +44,6 @@ public function scopeJoinRelationship(Builder $query, $relationName, $callback =
4444
4545        if  (Str::contains ($ relationName , '. ' )) {
4646            $ query ->joinNestedRelationship ($ relationName , $ callback , $ joinType , $ useAlias , $ disableExtraConditions );
47- 
4847            return ;
4948        }
5049
@@ -138,7 +137,11 @@ public function scopeJoinNestedRelationship(Builder $query, string $relationship
138137        /** @var \Illuminate\Database\Eloquent\Relations\Relation */ 
139138        $ latestRelation  = null ;
140139
140+         $ part  = [];
141141        foreach  ($ relations  as  $ relationName ) {
142+             $ part [] = $ relationName ;
143+             $ fullRelationName  = join (". " , $ part );
144+             
142145            $ currentModel  = $ latestRelation  ? $ latestRelation ->getModel () : $ query ->getModel ();
143146            $ relation  = $ currentModel ->{$ relationName }();
144147            $ relationCallback  = null ;
@@ -147,7 +150,16 @@ public function scopeJoinNestedRelationship(Builder $query, string $relationship
147150                $ relationCallback  = $ callback [$ relationName ];
148151            }
149152
153+             if  ($ callback  && is_array ($ callback ) && isset ($ callback [$ fullRelationName ])) {
154+                 $ relationCallback  = $ callback [$ fullRelationName ];
155+             }
156+ 
150157            $ alias  = $ this  ->getAliasName ($ useAlias , $ relation , $ relationName , $ relation ->getQuery ()->getModel ()->getTable (), $ relationCallback );
158+             if  ($ alias  && $ relation  instanceof  BelongsToMany && ! is_array ($ alias )) {
159+                 $ extraAlias  = $ this  ->getAliasName ($ useAlias , $ relation , $ relationName , $ relation ->getTable (), $ relationCallback );
160+                 $ alias  = [$ extraAlias , $ alias ];
161+             }
162+ 
151163            $ aliasString  = is_array ($ alias ) ? implode ('. ' , $ alias ) : $ alias ;
152164            $ useAlias  = $ alias  ? true  : $ useAlias ;
153165
0 commit comments