Model: fix eager-loaded relation loading from static query
This commit is contained in:
parent
e57819d318
commit
b7bfb3e153
@ -174,11 +174,25 @@ export abstract class Model<T extends Model<T>> extends AppClass implements Bus
|
|||||||
builder.field(field.databaseKey)
|
builder.field(field.databaseKey)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if ( Array.isArray(this.prototype.with) ) {
|
||||||
|
// Try to get the eager-loaded relations statically, if possible
|
||||||
for (const relation of this.prototype.with) {
|
for (const relation of this.prototype.with) {
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
builder.with(relation)
|
builder.with(relation)
|
||||||
}
|
}
|
||||||
|
} else if ( this.constructor.length < 1 ) {
|
||||||
|
// Otherwise, if we can instantiate the model without any arguments,
|
||||||
|
// do that and get the eager-loaded relations directly.
|
||||||
|
const inst = Container.getContainer().make<Model<any>>(this)
|
||||||
|
if ( Array.isArray(inst.with) ) {
|
||||||
|
for (const relation of inst.with) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
|
// @ts-ignore
|
||||||
|
builder.with(relation)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
builder.withScopes(this.prototype.scopes)
|
builder.withScopes(this.prototype.scopes)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user