在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()
,但在过滤方面也很费力。