【发布时间】:2015-11-20 07:47:19
【问题描述】:
我的实体中有一个自定义属性:
public function getStockSoldPercentage()
{
return ($this->getStockSold() / $this->getFullStock()) * 100;
}
通过使用此属性,我可以访问售罄的库存百分比。目前我使用这样的查询
$bestellers = $this->getDoctrine()->getRepository('CoreBundle:Products')->findAll();
并直接在我的树枝模板中处理对象(百分比高于例如 75% 的所有产品)的过滤。所以你看,这对于缩放来说并不是很好。当我每次用户访问网站时都必须查询 1000 种产品时,这太过分了……
我想构建一个自定义实体存储库,例如 findAllBestSellers() 并只查询所有 getStockSoldPercentage() 属性高于 75 的对象。
我该怎么做?
编辑:
getStockSold() 和 getFullStock() 不是字段,而是函数。它们看起来像这样:
public function getFullStock()
{
$stock = 0;
foreach ($this->variants as $variant) {
$stock += $variant->getStock();
}
return $stock;
}
public function getStockSold()
{
return $this->getFullStock() - $this->getCurrentStock();
}
【问题讨论】:
标签: php sql symfony doctrine-orm dql