通常从实体返回计算值非常简单。 比如说。
/**
* @ORM\Column()
*/
private $baseValue;
(...)
public function getCalculatedValue() {
return $this->baseValue * 1.19;
}
在我的情况下,计算取决于相同类型的其他实体的现有。
在我的例子中,计算出的值是(在PseudoCode中):
(100 / totalCountOfEntitiesOfTheSameType -1) * thisEntity.value
或作为存储库方法:
$qb = $this->_em->createQueryBuilder();
$qb->select('COUNT(e.id)');
$qb->from($this->getClassName(), 'e');
$totalCount = $qb->getQuery()->getSingleScalarResult();
if ($totalCount > 1) {
return (100 / ($totalCount - 1)) * $step->getStepOrder();
} else {
return null;
}
我想避免在服务中调用存储库(例如,我的API不是服务,只是我实体属性的虚拟JMS属性)。
有没有办法用我的实体本身公开这个功能?
或者有没有办法为每个实体预先计算这个值并坚持下去(这会迫使我更新所有这类实体)?