想象一下以下关系:
Team --one-to-one--> Owner --many-to-many--> Role
Team
实体具有单个
Owner
具有多个
Role
实体。
我可以使用QueryBuilder成功地做到这一点:
const query = this.manager.createQueryBuilder()
.select('team')
.from(Team, 'team')
.leftJoinAndSelect('team.owner', 'owner')
.leftJoinAndSelect('owner.roles', 'roles'
.where('roles.name IN (:...roles)', { roles })
.getMany()
这将根据
roles
我提供。
team.owner.roles
价值是
而且
正在返回集中进行筛选。因此,如果我搜索一个拥有“管理员”角色的团队,匹配的所有团队都将列出
“管理员”角色在其角色中-即使原始集合包含更多。
如何基于关系属性过滤实体,但仍然返回关联关系属性的完整集合