根据其他实体计算实体中的值?

时间:2015-10-21 09:32:41

标签: doctrine-orm

通常从实体返回计算值非常简单。 比如说。

/**
* @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属性)。

有没有办法用我的实体本身公开这个功能?

或者有没有办法为每个实体预先计算这个值并坚持下去(这会迫使我更新所有这类实体)?

0 个答案:

没有答案