我有3张桌子,如下所示:
用户:
id
家庭:
id
家庭用户:
familyId | userId
我有这些关系:
// User
@OneToMany(() => FamilyUser, (familyUser) => familyUser.user)
familyUsers: FamilyUser[];
// Family
@OneToMany(() => FamilyUser, (familyUser) => familyUser.family)
familyUsers: FamilyUser[];
// FamilyUser
@ManyToOne(() => User, (user) => user.familyUsers, { nullable: false })
user: User;
@ManyToOne(() => Family, (family) => family.familyUsers, { nullable: false })
family: Family;
我想获取特定用户的家庭名单。第一种选择是:
await this.familiesUsersRepository.find({
relations: ['family'],
where: {
user: { id: 6 },
},
});
但是在这种情况下,我得到了FamilyUser
s的列表,每个列表都包含一个族对象。但是我想返回属于该用户的家庭列表。我尝试了这个:
return await this.familiesRepository.find({
relations: ['familyUsers', 'familyUsers.user'],
where: {
// ???
},
});
但是不知道我应该在where子句中设置什么。任何想法?
我不知道我是否有您的问题,但我认为您只需从userRepository即可返回一个用户的家庭:
let idUser = 6 ;
return await this.userRepository.findOne(idUser,{relations: ['familyUsers']});
更新
return await this.familyRepository.createQueryBuilder('family')
.leftJoinAndSelect('family.familyUsers', 'familyusers')
.where("familyusers.user = :idUser", { idUser }) // if familyusers.user doesn't work replace 'user' with the name of colmun in the table
.getMany()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句