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

如何使用TypeORM的leftJoinAndSelect实现多表关联查询?

解决方案

情况1:已在Company实体配置反向关联

先确认你的Company实体中添加了和Invitation对应的一对多反向关联,配置参考如下:

// Company 实体中添加这段配置
@OneToMany(() => Invitation, invitation => invitation.company)
public invitations: Invitation[];

修改后的查询代码如下:

this.createQueryBuilder('company')
      .leftJoinAndSelect('company.companyAdmins', 'companyAdmins')
      .leftJoinAndSelect('companyAdmins.user', 'user')
      // 新增关联invitation的语句
      .leftJoinAndSelect('company.invitations', 'invitations')
      .where('company.id = :id', { id })
      .getOne();

查询返回的Company对象下会新增invitations字段,挂载该公司关联的所有邀请数据。


情况2:不修改Company实体配置

如果不想额外添加反向关联,可以手动指定关联条件完成查询:

this.createQueryBuilder('company')
      .leftJoinAndSelect('company.companyAdmins', 'companyAdmins')
      .leftJoinAndSelect('companyAdmins.user', 'user')
      // 手动关联Invitation实体,注意替换成你实际导入的Invitation实体名
      .leftJoinAndSelect(Invitation, 'invitation', 'invitation.company = company.id')
      .where('company.id = :id', { id })
      .getOne();

如果你的Invitation表中关联Company的外键字段是自定义命名(比如company_id),请把第三个参数里的字段替换为实际的数据库字段名即可。

内容的提问来源于stack exchange,提问作者Shamoon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:48:01