0

我有 2 个实体,如下所示。我想得到团队的名字

匹配实体

关于

first_team_id 和 second_team_id

团队实体

      @Entity()
        export class TeamsEntity {
        @PrimaryGeneratedColumn("increment")
        team_id: number;
    
        @Column({unique: true})
        @IsString()
        team_name: string;

}

first_team_id 和 second_team_id 与 team_id 相同。

@Entity()
export class MatchesEntity {
    @PrimaryColumn()
    @IsNumber()
    first_team_id: number;

    @PrimaryColumn()
    @IsNumber()
    second_team_id: number;

    @Column()
    @IsNumber()
    first_team_score: number;

    @Column()
    @IsNumber()
    second_team_score: number;

}

我找到了这样的解决方案

   async getSingleMatchHistoryService(teamId: string): Promise<MatchesEntity[]> {
  
      return  await getManager().createQueryBuilder(MatchesEntity,"mt")
            .select("mt.first_team_score","FirsTeamScore")
            .addSelect("mt.second_team_score","SecondTeamScore")
            .addSelect("te.team_name","FirsTeamName")
            .addSelect("te2.team_name","SecondTeamName")
            .leftJoin(TeamsEntity,"te","te.team_id=mt.first_team_id")
            .leftJoin(TeamsEntity,"te2","te2.team_id=mt.second_team_id")
            .where(`mt.first_team_id=${teamId} or mt.second_team_id=${teamId}`)
            .getRawMany()
    );

但是,如果我像这样使用 typeorm,我可以使用原始 sql。有没有其他方法可以解决它?

4

0 回答 0