TypeOrm QueryBuilder 多对一关系 table

TypeOrm QueryBuilder Multiple relations to one table

感谢阅读并提前尝试提供帮助!

我有以下问题。在我的“Offer”实体上,与“User”有多种关系,如下所示:

  @ManyToOne(() => User, (user) => user.offers, { nullable: false })
  owner: User;
  @ManyToMany(() => User, (user) => user.participates, {
    nullable: true,
    cascade: true,
  })
  @JoinTable()
  participants: User[];
  @ManyToMany(() => User, (user) => user.applied, {
    nullable: true,
    cascade: true,
  })
  @JoinTable()
  applicants: User[];

问题是 - 如何使用查询生成器加载所有这些关系?当我使用 leftJoinAndSelect 时,它会抛出一条错误消息:“QueryFailedError: table name “user” specified more than once”

return await this.getOffersBaseQuery()
  .andWhere('o.id = :id', {
    id,
  })
  .leftJoinAndSelect('o.skill', 'skill')
  .leftJoinAndSelect('o.owner', 'user')
.leftJoinAndSelect('o.participants', 'user')
  .select([
    'o',
    'skill.id',
    'skill.name',
    'user.username',
    'user.email',
    'user.id',
  ])
  .getOne();

以防万一 - 基本查询:

private getOffersBaseQuery() {
    return this.offerRepository.createQueryBuilder('o').orderBy('o.id', 'DESC');
  }

没关系,这个问题的答案就在 TypeORM 文档中。我所要做的就是为

使用不同的别名
.leftJoinAndSelect('o.participants', 'user')

我用的是:

.leftJoinAndSelect('o.participants', 'participants')

现在觉得自己好傻