Reputation: 4037
team | go | right | left |
---|---|---|---|
1 | 40 | 60 | 120 |
2 | 50 | 40 | 70 |
3 | 35 | 10 | 80 |
4 | 70 | 15 | 97 |
team | go | right | left |
---|---|---|---|
1 | "go1" | "ok right" | "left1" |
2 | "lets go" | "right2" | "left2" |
3 | "here we go" | "right3" | "left100" |
4 | "move" | "right4" | "OK LEFT" |
@Entity('team_speeds')
class Speeds extends BaseEntity {
@PrimaryGeneratedColumn()
team: number
@Column()
go: number
@Column()
right: number
@Column()
left: number
}
@Entity('team_words')
class Words extends BaseEntity {
@PrimaryGeneratedColumn()
team: number
@Column()
go: string
@Column()
right: string
@Column()
left: string
}
I know that how to join two table in MySQL Query.
But, I don't know how to join two table in TypeORM.
How to join two table based on team column ?
Upvotes: 1
Views: 1211
Reputation: 5804
You need to update the entity classes like below:
@Entity('team_speeds')
class Speeds extends BaseEntity {
@PrimaryGeneratedColumn()
team: number
@Column()
go: number
@Column()
right: number
@Column()
left: number
@OneToOne(() => Words, words => words.Speeds)
words: Words;
}
@Entity('team_words')
class Words extends BaseEntity {
@PrimaryGeneratedColumn()
team: number
@Column()
go: string
@Column()
right: string
@Column()
left: string
@OneToOne(() => Speeds, speeds => speeds.words)
@JoinColumn({ name: 'team' })
speeds: Speeds;
}
Then when you want to query data, you can use one from below.
async foo(teamSpeedId: number) {
const speeds = await getManager().getRepository(Speeds).find({
relations: ['words'],
where: { team: teamSpeedId },
});
}
async foo(teamSpeedId: number) {
const speeds = await connection
.getRepository(Speeds)
.createQueryBuilder("speed")
.leftJoinAndSelect("speed.words", "word")
.where('team = :id', {id: teamSpeedId})
.getMany();
}
Check this documentation for more info.
Upvotes: 1