仅限 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”中创建一个方法。
此方法将检索您需要的最后一个项目,而无需遍历所有项目。
我有以下实体:
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”中创建一个方法。 此方法将检索您需要的最后一个项目,而无需遍历所有项目。