diff --git a/packages/pinia-orm/src/model/attributes/relations/HasMany.ts b/packages/pinia-orm/src/model/attributes/relations/HasMany.ts index 65ceba85c..74865352a 100644 --- a/packages/pinia-orm/src/model/attributes/relations/HasMany.ts +++ b/packages/pinia-orm/src/model/attributes/relations/HasMany.ts @@ -4,6 +4,7 @@ import type { Collection, Element } from '../../../data/Data' import type { Query } from '../../../query/Query' import type { Model, PrimaryKey } from '../../Model' import type { Dictionary } from './Relation' +import { isArray } from '../../../support/Utils' import { Relation } from './Relation' export class HasMany extends Relation { @@ -76,7 +77,11 @@ export class HasMany extends Relation { const dictionary = this.buildDictionary(query.get(false)) models.forEach((model) => { - const key = model[this.getKey(this.localKey)] + const key = this.getKey( + isArray(this.localKey) + ? this.localKey.map(key => model[key]) + : model[this.localKey] + ) dictionary[key] ? model.$setRelation(relation, dictionary[key]) @@ -89,8 +94,12 @@ export class HasMany extends Relation { */ protected buildDictionary (results: Collection): Dictionary { return this.mapToDictionary(results, (result) => { - const key = this.getKey(this.foreignKey) - return [result[key], result] + const key = this.getKey( + isArray(this.foreignKey) + ? this.foreignKey.map(key => result[key]) + : result[this.foreignKey] + ) + return [key, result] }) }