TypeORM如何使用关系属性/属性进行深度关系查询



Atm我正在使用TypeORM及其查询生成器深入研究Nest.js。

我发现了可以使用的relationship属性,我很好奇是否有可能通过使用";关系语法";在第一个结果语句中。

它只适用于一个关系,但如果我想组合更多的关系,我不知道如何做到这一点。我切换到尝试硬模式,并尝试包装两个对象,如下所示:{ChildEntity_name,ParentEntity.ChildEntity_name},因为我在TypeORM文档中找不到这个主题,但(当然(它导致了一个错误。

如有任何帮助和资源,我们将不胜感激。

async getAllDeep(): Promise<Order[]> {
return this.orderRepository.find({
relations: [
'Orderposition',
'Order.Orderposition,
],
});
return this.orderRepository
.createQueryBuilder('order')
.leftJoinAndSelect(
'Order.Orderposition',
'Orderposition',
)
.leftJoinAndSelect(
'Orderposition.Article',
'Article',
)
.leftJoinAndSelect(
'Article.Supplier',
'Supplier',
)
.getMany();
}
}
}

是的,你可以这样做。您需要将relations作为嵌套对象传递,如下所示:

this.orderRepository.find({
relations: {
Orderposition: {
Article: {
Supplier: true
}
}
},
});

这将导致以下查询:

SELECT * FROM "Order"
LEFT JOIN "Orderposition" ON "Orderposition"."order_id" = "Order"."id"
LEFT JOIN "Article" ON "Article"."Orderposition_id" = "Orderposition"."id"
LEFT JOIN "Supplier" ON "Supplier"."Article_id" = "Article"."id"

最新更新