You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:27:03