Doctrine 获得销量最高的产品

Doctrine get Product with most sales

我有一个产品实体与许多订单关联。 我想构建一个存储库方法来带来最畅销的产品。 每个订单只有 1 个产品和 1 个数量,因此数量无关紧要。

我在 ProductRepository 中的当前进度:

    public function getMostPopularProducts($limit)
    {
        return $this->createQueryBuilder("p")
            ->join(Order::class, "o", "o.item = p.id")
            ->setMaxResults($limit)
            ->getQuery()
            ->getResult();
    }

加入订单、计算订单总量并检索从最畅销产品到最不畅销产品的订购结果的最佳方法是什么。

菜鸟我显然做错了。 正确的方法是从订单到产品,而不是相反。

这有效。

    public function getMostSoldItems()
    {
        return $this->createQueryBuilder("o")
            ->groupBy("o.item")
            ->setMaxResults(10)
            ->orderBy("COUNT(o.item)", "ASC")
            ->getQuery()
            ->getResult();
    }