下面的查询获取全部clients
个及其关联的products
个.它还加入包含每个产品的历史期末库存的每个产品的ProductSnapshot
.我想将ProductSnapshot
联接限制为一条记录,这可以通过按id 'DESC'
排序并将每个产品限制为一条记录来实现.实现这一目标的最佳方式是什么?
async findClientsProducts() {
return await this.clientsRepository
.createQueryBuilder('client')
.leftJoinAndSelect('client.products', 'product')
.leftJoinAndSelect('product.productSnapshots', 'productSnapshot')
.getMany();
}
编辑:
通过修改条件以包含一个order子句,并修复ON子句以引用适当的字段,所选的答案让我完成了大部分工作.通过productSnapshot.id订购可确保您获得该产品的最新快照行.
async findClientsProducts() {
return await this.clientsRepository
.createQueryBuilder('client')
.leftJoinAndSelect('client.products', 'product')
.leftJoinAndMapOne(
'product.productSnapshot',
ProductSnapshot,
'productSnapshot',
'productSnapshot.product_id = product.id ORDER BY productSnapshot.id DESC',
)
.getMany();
}