簡體   English   中英

Typeorm在關系的另一邊找到位置

[英]Typeorm find with where on other side of relation

我有3個表如下:

  1. 用戶:

    id

  2. 家庭:

    id

  3. 家庭用戶:

    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的列表,其中每個都包含一個家族 object。 但我想返回屬於用戶的家庭列表。 我試過這個:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM