问题描述
我需要在一个带有 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;
}
}