提问者:小点点

从相关实体获取最小列值


求求你,帮帮我。 我找不到关于如何做这件事的信息。 我有这个密码。 它加载具有所有关系的所有产品。 其中一个关系是产品项目。 在产品项目实体中,我得到了价格列。

我如何能得到最小的产品项目价格而不进入我的产品项目响应阵列?

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
        }
    ]
}

请帮帮我


共1个答案

匿名用户

您可以在Stackoverflow上找到这个问题的答案。

下面是一个类似的问题类型orm select max with specific column

基本上,您正在使用的getManyAndCount()方法在获取实体时很有用。 在您的示例中,您试图获取包含多个实体的聚合值。

您需要进行单独的选择,如下所示

query.select("MIN(item.price)", "min");

然后用

return query.getRawOne();