NestJS中不使用createQueryBuilder可否通过relations实现多表关联查询
实现思路
TypeORM 的 relations 配置原生支持嵌套关联,完全可以实现三层表关联查询,和你现有 createQueryBuilder 写法的效果完全等价。
写法1:对象式嵌套写法(更直观,适合后续加关联筛选条件)
const info = await this.aRepo.findOne({ where: { id: id }, relations: { bs: { cs: true } } });
写法2:数组式字符串嵌套写法(和你要找的 relations:[] 用法完全匹配)
const info = await this.aRepo.findOne({ where: { id: id }, relations: ['bs', 'bs.cs'] });
补充说明
- 以上两种写法默认都是左连接查询,和你原代码的
leftJoinAndSelect行为一致,返回的字段范围也完全相同 - 如果需要给关联的 b 表或 c 表加筛选条件、指定返回字段,可以嵌套搭配
where、select配置使用,无需切换回createQueryBuilder - 如果需要使用内连接、右连接等其他连接类型,才需要用
createQueryBuilder实现
内容的提问来源于stack exchange,提问作者popo
相关产品推荐
相关产品推荐

