File tree Expand file tree Collapse file tree 3 files changed +13
-7
lines changed Expand file tree Collapse file tree 3 files changed +13
-7
lines changed Original file line number Diff line number Diff line change @@ -234,7 +234,7 @@ export default class QueryBuilder {
234
234
context . logger . log ( 'WARNING: field has neither parent nor related property. Fallback to attribute name' , field ) ;
235
235
}
236
236
237
- if ( model . shouldEagerLoadRelation ( field , relatedModel ) &&
237
+ if ( model . shouldEagerLoadRelation ( name , field , relatedModel ) &&
238
238
! this . shouldRelationBeIgnored ( model , relatedModel , ignoreRelations ) ) {
239
239
240
240
const multiple : boolean = ! ( field instanceof context . components . BelongsTo ||
Original file line number Diff line number Diff line change @@ -206,14 +206,20 @@ export default class Model {
206
206
* @param {Model } relatedModel Related model
207
207
* @returns {boolean }
208
208
*/
209
- public shouldEagerLoadRelation ( field : Field , relatedModel : Model ) : boolean {
209
+ public shouldEagerLoadRelation ( fieldName : string , field : Field , relatedModel : Model ) : boolean {
210
210
const context = Context . getInstance ( ) ;
211
211
212
- if ( field instanceof context . components . HasOne || field instanceof context . components . BelongsTo ) {
212
+ if (
213
+ field instanceof context . components . HasOne ||
214
+ field instanceof context . components . BelongsTo ||
215
+ field instanceof context . components . MorphOne
216
+ ) {
213
217
return true ;
214
218
}
215
219
216
220
const eagerLoadList : Array < String > = this . baseModel . eagerLoad || [ ] ;
217
- return eagerLoadList . find ( ( n ) => n === relatedModel . singularName || n === relatedModel . pluralName ) !== undefined ;
221
+ return eagerLoadList . find ( ( n ) => {
222
+ return n === relatedModel . singularName || n === relatedModel . pluralName || n === fieldName ;
223
+ } ) !== undefined ;
218
224
}
219
225
}
Original file line number Diff line number Diff line change @@ -136,19 +136,19 @@ describe('Model', () => {
136
136
describe ( '.shouldEagerLoadRelation' , ( ) => {
137
137
it ( 'returns true if field is a belongsTo or hasOne relation' , ( ) => {
138
138
const model = context . getModel ( 'post' ) ;
139
- expect ( model . shouldEagerLoadRelation ( model . fields . get ( 'user' ) , context . getModel ( 'user' ) ) ) . toEqual ( true ) ;
139
+ expect ( model . shouldEagerLoadRelation ( 'user' , model . fields . get ( 'user' ) , context . getModel ( 'user' ) ) ) . toEqual ( true ) ;
140
140
141
141
// TODO test hasOne
142
142
} ) ;
143
143
144
144
it ( 'returns true if field is in the eagerLoad array' , ( ) => {
145
145
const model = context . getModel ( 'post' ) ;
146
- expect ( model . shouldEagerLoadRelation ( model . fields . get ( 'comments' ) , context . getModel ( 'comment' ) ) ) . toEqual ( true ) ;
146
+ expect ( model . shouldEagerLoadRelation ( 'post' , model . fields . get ( 'comments' ) , context . getModel ( 'comment' ) ) ) . toEqual ( true ) ;
147
147
} ) ;
148
148
149
149
it ( 'returns false if field neither belongsTo/hasOne nor in the eagerLoad array' , ( ) => {
150
150
const model = context . getModel ( 'user' ) ;
151
- expect ( model . shouldEagerLoadRelation ( model . fields . get ( 'comments' ) , context . getModel ( 'comment' ) ) ) . toEqual ( false ) ;
151
+ expect ( model . shouldEagerLoadRelation ( 'user' , model . fields . get ( 'comments' ) , context . getModel ( 'comment' ) ) ) . toEqual ( false ) ;
152
152
} ) ;
153
153
} ) ;
154
154
} ) ;
You can’t perform that action at this time.
0 commit comments