首页 > 解决方案 > TypeORM,多对多关系用户 - 动物,给定用户 ID 如何查询动物

问题描述

所以我有这个实体

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

    @Column()
    email: string

    @Column()
    name: string

    @ManyToMany(x => Animal)
    @JoinTable()
    animals: Animal[]
}

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

    @Column()
    name: string
}

我想通过给定的用户 ID 选择所有动物并跳过。Animal.user我遇到了困难,因为实体上没有反比关系。

标签: typescriptormtypeorm

解决方案


这是使用查询构建器的示例:

const animals = await User.createQueryBuilder('user')
      .leftJoin('user.animals', 'animals')
      .where('user.id = :userId', {
        userId: userId,
      })
      .select(['animals'])
      .take(take)
      .skip(skip)
      .getMany();

推荐阅读