typeorm querybuilder:仅选择关系

时间:2020-03-19 13:43:59

标签: sql node.js nestjs typeorm

所以我有那些实体:

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

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

Item {
    name: string;
    active: boolean;
}

我可以使用的内容:一组包含组ID的groupIds

我的目标:要获取Item的数组,但只能包含group.id在我拥有的数组中的一个数组属性active true



我试图建立一个像这样的querybuilder:

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

但是我只能得到其中有有效group的{​​{1}}数组(没有任何关系)。

如果只用一次查询就可以做到,我需要更改什么?

1 个答案:

答案 0 :(得分:3)

尝试使用此功能:

 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();