在实体 SYMFONY 中使用构造函数进行计算

问题描述

我需要在一个带有 symfony(奏鸣曲)的实体中做一个计算,例如: 我的实体中有 3 个带有学说的标签,我需要将以下结果保存在数据库中: $calcul = $ a + $b ;

这是我的实体

class National
{
    /**
     * @var int
     */
    private $id;

    /**
     * @var string(unique=true)
     */
    private $selection;
    
    /**
     * @var int
     */
    private $a;
    
    /**
     * @var int
     */
    private $b;
    
    /**
     * @var string
     */
    private $total;

这是我的经典 setter 和 getter

/**
     * Set a
     *
     * @param string $a
     *
     * @return Events
     */
    public function setA($a)
    {
        $this->a = $a;

        return $this;
    }

    /**
     * Get a
     *
     * @return string
     */
    public function getA()
    {
        return $this->a;
    }
    
/**
     * Set b
     *
     * @param string $b
     * @return Events
     */
    public function setB($b)
    {
        $this->b = $b;

        return $this;
    }

所以问题是如何做构造函数 ???

将 $calcul 中的结果保存在数据库

(例如:如果我在标签 $a 中写 5 和在标签 $b 中写 5 - 我需要直接在标签 $calcul 中写 10 ....)

解决方法

推荐

我不建议将计算出的数据持久化到数据库 (3FN Explanation)。

通常情况下,您不希望存储由两个或多个其他字段产生的字段,就像您需要更新原始字段之一一样,这也需要您重新计算一个重新- 每次都存储结果,每次都需要多做几次操作。

此外,如果由于某种原因必须更改计算,则您必须更新使用先前计算完成的所有数据。这将变得非常难以管理。

如果您需要检索两个或多个字段的结果,则应通过在需要的地方调用函数来执行。

技术上

当然,如果您仍然想这样做,或者确实需要这样做,那么这样做的方法是:

List(Of T)

在您的控制器或服务中

class National {
   ... // Your fields,getters and setters
   public function calculTotal() {
      $this->total = $this->a + $this->b;
      return $this;
   }
}