TypeORM:为关系的关系提供参数

时间:2020-10-20 04:07:23

标签: typeorm

在TypeORM中,我具有以下实体:

@Entity()
class Game {
   @PrimaryGeneratedColumn()
   id: number

   @ManyToOne(() => Team, { eager: true )
   opponent: Team

   @Column()
   season: number
   ...
}

@Entity()
class Team {
   @PrimaryGeneratedColumn()
   id: number

   @OneToMany(() => TeamSeasonal, s => s.team, { eager: true })
   seasons?: TeamSeasonal[]
   ...
}

@Entity()
class TeamSeasonal {
   @PrimaryGeneratedColumn()
   id: number

   @Column()
   season: number
   ...
}

我正在尝试从Game中查询WHERE game.season = 2020,并从对手.seasons中查询季节= 2020的季节,以完成以下输出:

{
   games: [
      {
         id: 1,
         season: 2020,
         opponent: {
            id: 1,
            seasons: [{
               id: 1,
               season: 2020
            }]
         }
      }
   ]
}

我已经尝试了以下方法,并且成功地将所有seasons都收回了,但是我不知道如何过滤结果game.opponent.seasons数组以仅将season包括在where子句。有任何想法吗?我想在查询本身中执行此操作,而不是在生成的JSON之后进行操作。

此外,如果TeamSeasonal for Team中不存在该season值,则该查询仍应返回游戏和对手,但带有一个空的seasons数组。

getRepository(Game).find({
   where: {
      season
   }
})

我愿意使用createQueryBuilder(),但在过滤方面也很费力。

0 个答案:

没有答案