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 {
234234 context . logger . log ( 'WARNING: field has neither parent nor related property. Fallback to attribute name' , field ) ;
235235 }
236236
237- if ( model . shouldEagerLoadRelation ( field , relatedModel ) &&
237+ if ( model . shouldEagerLoadRelation ( name , field , relatedModel ) &&
238238 ! this . shouldRelationBeIgnored ( model , relatedModel , ignoreRelations ) ) {
239239
240240 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 {
206206 * @param {Model } relatedModel Related model
207207 * @returns {boolean }
208208 */
209- public shouldEagerLoadRelation ( field : Field , relatedModel : Model ) : boolean {
209+ public shouldEagerLoadRelation ( fieldName : string , field : Field , relatedModel : Model ) : boolean {
210210 const context = Context . getInstance ( ) ;
211211
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+ ) {
213217 return true ;
214218 }
215219
216220 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 ;
218224 }
219225}
Original file line number Diff line number Diff line change @@ -136,19 +136,19 @@ describe('Model', () => {
136136 describe ( '.shouldEagerLoadRelation' , ( ) => {
137137 it ( 'returns true if field is a belongsTo or hasOne relation' , ( ) => {
138138 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 ) ;
140140
141141 // TODO test hasOne
142142 } ) ;
143143
144144 it ( 'returns true if field is in the eagerLoad array' , ( ) => {
145145 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 ) ;
147147 } ) ;
148148
149149 it ( 'returns false if field neither belongsTo/hasOne nor in the eagerLoad array' , ( ) => {
150150 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 ) ;
152152 } ) ;
153153 } ) ;
154154} ) ;
You can’t perform that action at this time.
0 commit comments