@@ -118,31 +118,51 @@ export class BelongsToManyRelation {
118118 relation : BelongsToManyOptions
119119 ) {
120120 const PivotModel = relation . pivotModel ( )
121- const RelatedModel = relation . model ( )
121+ const RelationModel = relation . model ( )
122122
123123 const modelTable = Model . table ( )
124124 const pivotTable = PivotModel . table ( )
125- const relatedTable = RelatedModel . table ( )
125+ const relatedTable = RelationModel . table ( )
126126
127127 const modelPK = Model . schema ( ) . getMainPrimaryKeyName ( )
128- const relatedPK = RelatedModel . schema ( ) . getMainPrimaryKeyName ( )
129-
130- const pivotFK = PivotModel . schema ( ) . getColumnNameByProperty (
131- relation . foreignKey
132- )
133- const pivotRK = PivotModel . schema ( ) . getColumnNameByProperty (
134- relation . relationForeignKey
135- )
136-
137- query . table ( pivotTable )
128+ const relatedPK = RelationModel . schema ( ) . getMainPrimaryKeyName ( )
129+
130+ const pivotFK =
131+ PivotModel . schema ( ) . getColumnNameByProperty ( relation . foreignKey ) ||
132+ PivotModel . schema ( ) . getColumnNameByProperty (
133+ `${ String . toCamelCase ( Model . name ) } Id`
134+ )
135+ const pivotRK =
136+ PivotModel . schema ( ) . getColumnNameByProperty (
137+ relation . relationForeignKey
138+ ) ||
139+ PivotModel . schema ( ) . getColumnNameByProperty (
140+ `${ String . toCamelCase ( RelationModel . name ) } Id`
141+ )
142+
143+ let whereRaw = `${ pivotTable } .${ pivotFK } = ${ modelTable } .${ modelPK } `
144+
145+ switch ( PivotModel . schema ( ) . getModelDriverName ( ) ) {
146+ case 'sqlite' :
147+ case 'postgres' :
148+ whereRaw = `"${ pivotTable } "."${ pivotFK } " = "${ modelTable } "."${ modelPK } "`
149+ }
138150
139151 PivotModel . query ( )
140- . setQueryBuilder ( query )
141- . whereRaw ( ` ${ pivotTable } . ${ pivotFK } = ${ modelTable } . ${ modelPK } ` )
152+ . setDriver ( query , pivotTable )
153+ . whereRaw ( whereRaw )
142154 . whereExists ( innerQuery => {
143- RelatedModel . query ( )
144- . setQueryBuilder ( innerQuery )
145- . whereRaw ( `${ relatedTable } .${ relatedPK } = ${ pivotTable } .${ pivotRK } ` )
155+ let whereRaw = `${ relatedTable } .${ relatedPK } = ${ pivotTable } .${ pivotRK } `
156+
157+ switch ( RelationModel . schema ( ) . getModelDriverName ( ) ) {
158+ case 'sqlite' :
159+ case 'postgres' :
160+ whereRaw = `"${ relatedTable } "."${ relatedPK } " = "${ pivotTable } "."${ pivotRK } "`
161+ }
162+
163+ RelationModel . query ( )
164+ . setDriver ( innerQuery , relatedTable )
165+ . whereRaw ( whereRaw )
146166 . when ( relation . closure , relation . closure )
147167 } )
148168 }
0 commit comments