@@ -826,6 +826,15 @@ export abstract class BaseCrudDialect<Schema extends SchemaDef> {
826826 }
827827
828828 let result = query ;
829+
830+ const buildFieldRef = ( model : string , field : string , modelAlias : string ) => {
831+ const fieldDef = requireField ( this . schema , model , field ) ;
832+ const eb = expressionBuilder < any , any > ( ) ;
833+ return fieldDef . originModel
834+ ? this . fieldRef ( fieldDef . originModel , field , eb , fieldDef . originModel )
835+ : this . fieldRef ( model , field , eb , modelAlias ) ;
836+ } ;
837+
829838 enumerate ( orderBy ) . forEach ( ( orderBy ) => {
830839 for ( const [ field , value ] of Object . entries < any > ( orderBy ) ) {
831840 if ( ! value ) {
@@ -838,8 +847,7 @@ export abstract class BaseCrudDialect<Schema extends SchemaDef> {
838847 for ( const [ k , v ] of Object . entries < SortOrder > ( value ) ) {
839848 invariant ( v === 'asc' || v === 'desc' , `invalid orderBy value for field "${ field } "` ) ;
840849 result = result . orderBy (
841- ( eb ) =>
842- aggregate ( eb , this . fieldRef ( model , k , eb , modelAlias ) , field as AGGREGATE_OPERATORS ) ,
850+ ( eb ) => aggregate ( eb , buildFieldRef ( model , k , modelAlias ) , field as AGGREGATE_OPERATORS ) ,
843851 sql . raw ( this . negateSort ( v , negated ) ) ,
844852 ) ;
845853 }
@@ -852,7 +860,7 @@ export abstract class BaseCrudDialect<Schema extends SchemaDef> {
852860 for ( const [ k , v ] of Object . entries < string > ( value ) ) {
853861 invariant ( v === 'asc' || v === 'desc' , `invalid orderBy value for field "${ field } "` ) ;
854862 result = result . orderBy (
855- ( eb ) => eb . fn . count ( this . fieldRef ( model , k , eb , modelAlias ) ) ,
863+ ( eb ) => eb . fn . count ( buildFieldRef ( model , k , modelAlias ) ) ,
856864 sql . raw ( this . negateSort ( v , negated ) ) ,
857865 ) ;
858866 }
@@ -865,7 +873,7 @@ export abstract class BaseCrudDialect<Schema extends SchemaDef> {
865873 const fieldDef = requireField ( this . schema , model , field ) ;
866874
867875 if ( ! fieldDef . relation ) {
868- const fieldRef = this . fieldRef ( model , field , expressionBuilder ( ) , modelAlias ) ;
876+ const fieldRef = buildFieldRef ( model , field , modelAlias ) ;
869877 if ( value === 'asc' || value === 'desc' ) {
870878 result = result . orderBy ( fieldRef , this . negateSort ( value , negated ) ) ;
871879 } else if (
0 commit comments