从相关实体获取最小列值

yxyvkwin  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(322)

拜托,帮帮我。我找不到关于如何做到这一点的信息。我有这个密码。它加载所有关系的所有产品。关系之一是产品项。在productitem实体中,我有price列。
我如何能得到最小的产品项目价格没有得到在我的产品项目响应数组?

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

请帮帮我

mccptt67

mccptt671#

你可以在stackoverflow上找到答案。
下面是一个类似的问题类型选择最大与特定列
基本上, getManyAndCount() 获取实体时,您使用的方法很有用。在您的例子中,您试图获得包含多个实体的聚合值。
你需要单独选择,就像这样

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

然后用

return query.getRawOne();

相关问题