如何使用存储库将sql join查询转换为typeorm?

时间:2020-08-04 10:53:22

标签: inner-join typeorm

我正在尝试使用存储库编写此查询

const d = await getManager().query(`SELECT exam.fiscal_code, exam.exam_id, exam.exam_date, exam.diagnosis 
        FROM exam INNER JOIN patient ON exam.fiscal_code = patient.fiscal_code 
        WHERE exam.doctor_id = ${req.user.doctorId} AND patient.name =${req.body.name} AND patient.surname =${req.body.surname}`)

1 个答案:

答案 0 :(得分:0)

_c您应该首先阅读the documentation,因为它非常清楚如何实现。

首先,您需要按照文档中的说明用@ManyToOne@ManyToMany装饰属性。

然后只需使用提供的方法来编写查询:

await createQueryBuilder('exam')
    .innerJoinAndSelect('exam', 'exam.patient', 'exam.fiscalCode = patient.fiscalCode')
    .where(...)

或者,如果您正确装饰了属性并提供了反向关系,则可以执行以下操作:

await createQueryBuilder('exam')
    .innerJoinAndSelect('exam.fiscalCode', 'fiscalCode')
    .where(...)

下次,您应该提供对代码的更精确的描述,以便人们可以更好地了解您的工作并给出更精确的答案。因为不仅有一种做事的方法。

请注意,对于innerJoinAndSelect方法中的列,我使用了 camelCase 而不是 snake_case 。这是因为TypeORM需要Javascript属性的名称,而不是SQL属性的名称。我不知道您是否用这种方式命名,但您还是应该这样。

相关问题