我有一个从User
到Message
的一对多关系。
当我插入register一个带有消息的用户时,它会将用户添加到User
表中,并将消息添加到Message
表中,其中userId
指向用户的id。
这是使用以下设置自动完成的。User
实体:
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
email: string;
@JoinTable()
@OneToMany((type) => Message, (message) => message.user, {
cascade: true,
})
messages: Message[];
}
Message
实体:
@Entity()
export class Message {
@PrimaryGeneratedColumn()
id: number;
@Column()
text: string;
@ManyToOne((type) => User, (user) => user.messages, { eager: true })
user: User[];
}
如果我想查找用户通过userId
发送的所有消息,请使用:
const existing_msgs = await this.messageRepository.find({
where: { userId: user.id },
});
它告诉我它找不到userId
列,这是可以理解的,因为我没有特别将userId
包含到Message
实体中。
但是在这种情况下我们如何查询它呢?
2条答案
按热度按时间tzdcorbm1#
正如这篇文章中提到的,你必须在你的manytoone后面添加装饰器@JoinColumn,这样就可以连接列,你就可以用它来执行你想要的查询了:
请注意,这只适用于像id这样的主列。
您的消息表将是:
k2arahey2#
我能够做到这一点与以下querybuilder。