实体SYMFONY中带有构造函数的CALCUL



我需要在一个带有symfony(sonata(的实体中进行计算,如下所示:我在我的实体中有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;

这是我的经典设置和获取

/**
* 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解释(。

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

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

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

技术

当然,如果你仍然想这样做,或者真的需要它,那么做的方法是:

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

在您的控制器或服务中

// Fetch you National entity from repository
// Perform the calcul
$national->calculTotal()
// Persist the national entity with the new 'total' fields added to it
$this->entityManager->perist($national);
$this->entityManager->flush();

相关内容

  • 没有找到相关文章

最新更新