仅限 Doctrine select 集合的最后一个条目

Doctrine only select last entry of collection

我有以下实体:

class Product
{
     /**
     * @ORM\OneToMany(targetEntity="App\Entity\StockEntry", mappedBy="product")
     *
     * @Groups({"product:read", "product:read:all"})
     */
    private Collection $stockEntries;

    public function getStockEntries(): Collection
    {
        return $this->stockEntries;
    }

    public function getLastBuyPrice(): float
    {
        /** @var StockEntry $lastEntry */
        $lastEntry =  $this->getStockEntries()->last();
        if ($lastEntry) {
            return $lastEntry->getBuyPrice() ?: 0.;
        }
        return 0.;
    }
}

我的问题是,当我调用我的 getLastBuyPrice() 方法时,会检索所有 StockEntries,这可能会很长(一个产品可能有数百个库存条目)。我正在寻找一种重写 getLastBuyPrice() 的方法,以便仅检索最近的 StockEntry 来计算 lastBuyPrice。

我建议您在“StockEntryRepository”中创建一个方法。 此方法将检索您需要的最后一个项目,而无需遍历所有项目。