簡體   English   中英

TypeOrm QueryBuilder 多個關系到一張表

[英]TypeOrm QueryBuilder Multiple relations to one table

感謝您閱讀並嘗試提前提供幫助!

我有以下問題。 在我的“報價”實體上,與“用戶”有多種關系,如下所示:

  @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: 表名“user”指定了不止一次”

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

現在覺得自己很傻。

暫無
暫無

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

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