ModelRelation eagerloading: don't make an SQL query when there is nothing to fetch
This commit is contained in:
parent
8ca4c1a791
commit
cc884f7096
@ -82,11 +82,10 @@ export class OneModelRelation<S extends Model, O extends Model> extends ModelRel
|
||||
}
|
||||
|
||||
public async eagerLoad(relations: ModelRelation<S, O, O | null>[]): Promise<ModelQueryResult<O>> {
|
||||
this.query.where(
|
||||
this.dbProperties.foreignKey,
|
||||
relations.map(r => r.getModelID()).filter(id => id !== null && id !== undefined),
|
||||
WhereTest.IN
|
||||
);
|
||||
const ids = relations.map(r => r.getModelID()).filter(id => id !== null && id !== undefined);
|
||||
if (ids.length === 0) return [];
|
||||
|
||||
this.query.where(this.dbProperties.foreignKey, ids, WhereTest.IN);
|
||||
return await this.query.get();
|
||||
}
|
||||
|
||||
@ -136,11 +135,10 @@ export class ManyModelRelation<S extends Model, O extends Model> extends ModelRe
|
||||
}
|
||||
|
||||
public async eagerLoad(relations: ModelRelation<S, O, O[]>[]): Promise<ModelQueryResult<O>> {
|
||||
this.query.where(
|
||||
this.dbProperties.foreignKey,
|
||||
relations.map(r => r.getModelID()).filter(id => id !== null && id !== undefined),
|
||||
WhereTest.IN
|
||||
);
|
||||
const ids = relations.map(r => r.getModelID()).filter(id => id !== null && id !== undefined);
|
||||
if (ids.length === 0) return [];
|
||||
|
||||
this.query.where(this.dbProperties.foreignKey, ids, WhereTest.IN);
|
||||
return await this.query.get();
|
||||
}
|
||||
|
||||
@ -189,10 +187,10 @@ export class ManyThroughModelRelation<S extends Model, O extends Model> extends
|
||||
}
|
||||
|
||||
public async eagerLoad(relations: ModelRelation<S, O, O[]>[]): Promise<ModelQueryResult<O>> {
|
||||
this.query.where(
|
||||
`pivot.${this.dbProperties.localPivotKey}`,
|
||||
relations.map(r => r.getModelID()),
|
||||
WhereTest.IN);
|
||||
const ids = relations.map(r => r.getModelID());
|
||||
if (ids.length === 0) return [];
|
||||
|
||||
this.query.where(`pivot.${this.dbProperties.localPivotKey}`, ids, WhereTest.IN);
|
||||
this.query.pivot(`pivot.${this.dbProperties.localPivotKey}`, `pivot.${this.dbProperties.foreignPivotKey}`);
|
||||
return await this.query.get();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user