@@ -134,10 +134,14 @@ public function applyFiltersToQuery($query, Request $request, array $filterDescr
134134 if ($ relation === 'pivot ' ) {
135135 $ this ->buildPivotFilterQueryWhereClause ($ relationField , $ filterDescriptor , $ query , $ or );
136136 } else {
137+ $ relationInstance = (new $ this ->resourceModelClass )->{$ relation }();
138+
139+ $ qualifiedRelationFieldName = $ this ->relationsResolver ->getQualifiedRelationFieldName ($ relationInstance , $ relationField );
140+
137141 $ query ->{$ or ? 'orWhereHas ' : 'whereHas ' }(
138142 $ relation ,
139- function ($ relationQuery ) use ($ relationField , $ filterDescriptor ) {
140- $ this ->buildFilterQueryWhereClause ($ relationField , $ filterDescriptor , $ relationQuery );
143+ function ($ relationQuery ) use ($ qualifiedRelationFieldName , $ filterDescriptor ) {
144+ $ this ->buildFilterQueryWhereClause ($ qualifiedRelationFieldName , $ filterDescriptor , $ relationQuery );
141145 }
142146 );
143147 }
@@ -394,21 +398,25 @@ function ($whereQuery) use ($searchables, $requestedSearchDescriptor) {
394398 $ relation = $ this ->relationsResolver ->relationFromParamConstraint ($ searchable );
395399 $ relationField = $ this ->relationsResolver ->relationFieldFromParamConstraint ($ searchable );
396400
401+ $ relationInstance = (new $ this ->resourceModelClass )->{$ relation }();
402+
403+ $ qualifiedRelationFieldName = $ this ->relationsResolver ->getQualifiedRelationFieldName ($ relationInstance , $ relationField );
404+
397405 $ whereQuery ->orWhereHas (
398406 $ relation ,
399- function ($ relationQuery ) use ($ relationField , $ requestedSearchString , $ caseSensitive ) {
407+ function ($ relationQuery ) use ($ qualifiedRelationFieldName , $ requestedSearchString , $ caseSensitive ) {
400408 /**
401409 * @var Builder $relationQuery
402410 */
403411 if (!$ caseSensitive ) {
404412 return $ relationQuery ->whereRaw (
405- "lower( {$ relationField }) like lower(?) " ,
413+ "lower( {$ qualifiedRelationFieldName }) like lower(?) " ,
406414 ['% ' .$ requestedSearchString .'% ' ]
407415 );
408416 }
409417
410418 return $ relationQuery ->where (
411- $ relationField ,
419+ $ qualifiedRelationFieldName ,
412420 'like ' ,
413421 '% ' .$ requestedSearchString .'% '
414422 );
@@ -481,7 +489,9 @@ public function applySortingToQuery($query, Request $request): void
481489 $ query ->leftJoin ($ relationTable , $ relationForeignKey , '= ' , $ relationLocalKey );
482490 }
483491
484- $ query ->orderBy ("$ relationTable. $ relationField " , $ direction )
492+ $ qualifiedRelationFieldName = $ this ->relationsResolver ->getQualifiedRelationFieldName ($ relationInstance , $ relationField );
493+
494+ $ query ->orderBy ($ qualifiedRelationFieldName , $ direction )
485495 ->select ($ this ->getQualifiedFieldName ('* ' ));
486496 } else {
487497 $ query ->orderBy ($ this ->getQualifiedFieldName ($ sortableField ), $ direction );
0 commit comments