typeorm querybuilder:仅选择关系的关系

sir*_*nto 2 sql node.js typeorm nestjs

所以我有这些实体:

Group {
    id: number;
    name: string;
    persons: Person[];
}

Person {
    name: string;
    items: Item[];
}

Item {
    name: string;
    active: boolean;
}
Run Code Online (Sandbox Code Playgroud)

我有什么一组组id 的groupIds.

我的目标:获得一个数组,Item但只有一个包含在group.id我拥有的组数组内的组中并且具有属性的数组active true



我试图构建一个这样的查询构建器:

this.groupRepository.createQueryBuilder('group')
                      .innerJoin('group.persons', 'persons')
                      .innerJoinAndSelect('persons.items', 'items')
                      .where({'items.active': true, 'group.id': In(groupIds)})
                      .getMany();
Run Code Online (Sandbox Code Playgroud)

但我只得到一组group(没有任何关系)其中有效item的。

如果这甚至可以通过单个查询实现,我需要更改什么?

小智 7

尝试使用这个:

 this.groupRepository.createQueryBuilder('group')
   .leftJoinAndSelect('group.persons', 'persons')
   .leftJoinAndSelect('persons.items', 'items')
   .where('items.active =:active', {active: true})
   .andWhere('group.id IN (:...groupIds)', {groupIds})       
   .getMany();
Run Code Online (Sandbox Code Playgroud)