求求你,帮帮我。 我找不到关于如何做这件事的信息。 我有这个密码。 它加载具有所有关系的所有产品。 其中一个关系是产品项目。 在产品项目实体中,我得到了价格列。
我如何能得到最小的产品项目价格而不进入我的产品项目响应阵列?
const { skip, take } = pagination;
const query = this.createQueryBuilder('product');
query.where('product.shop = :id AND product.blocked = FALSE', {
id: shop.id,
});
if (skip) {
query.offset(Number(skip));
}
if (take) {
query.limit(Number(take));
}
query.leftJoin('product.info', 'info');
query.leftJoin('product.avatar', 'avatar');
// load product items
query.leftJoin('product.productItem', 'item');
query.select([
'product.id',
'product.path',
'info.name',
'info.description',
'info.info',
'info.lang',
'avatar.path',
'avatar.type',
'item.price'
]);
const [list, amount] = await query.getManyAndCount();
现在我得到了:
{
"list": [
{
"id": 3,
"path": "admin-product-2",
"order": 1,
"shop": {
"id": 1
},
"info": [
{
"name": "Admin Name ;)",
"description": "Shorty",
"info": "",
"lang": "RU"
}
],
"avatar": null,
"productItem": [
{
"price": 1000
},
{
"price": 500
},
{
"price": 300
},
{
"price": 2000
},
{
"price": 3000
}
]
}
]
}
........
但我需要:
{
"list": [
{
"id": 3,
"path": "admin-product-2",
"order": 1,
"shop": {
"id": 1
},
"info": [
{
"name": "Admin Name ;)",
"description": "Shorty",
"info": "",
"lang": "RU"
}
],
"avatar": null,
"minProductItemPrice": 300
}
]
}
请帮帮我
您可以在Stackoverflow上找到这个问题的答案。
下面是一个类似的问题类型orm select max with specific column
基本上,您正在使用的getManyAndCount()
方法在获取实体时很有用。 在您的示例中,您试图获取包含多个实体的聚合值。
您需要进行单独的选择,如下所示
query.select("MIN(item.price)", "min");
然后用
return query.getRawOne();