gpt4 book ai didi

php - Doctrine2 - 将数字保存为负值

转载 作者:行者123 更新时间:2023-11-29 15:26:29 24 4
gpt4 key购买 nike

我有一门可以保存发票的类(class) - 积分和费用。我有两个 ORM\Entity 类 - ChargeCredit - 使用 ORM\DiscriminatorMap

存储在同一个表中>
/**  
* @ORM\Table(name="transaction")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({
* "charge" = "Charge",
* "credit" = "Credit"
* })
*/
abstract class Transaction {

/**
* @ORM\Column(type="decimal")
*/
private $value;
}

我希望费用以正数存储在表中,而信用以负数存储,这样我就可以轻松编写 SQL 聚合函数来获取帐户的 SUM,这将同时考虑费用和信用没有任何工作。

但是,我希望 $credit->setValue() 接收正数,并且 $credit->getValue() 返回正数,以便在应用程序端更容易使用。简而言之,当存储积分数据时,我只需要负值,但处理数据时,我只需要正值。

如何让 Doctrine 仅在写入数据库时​​将值转换为负数(对于学分)(并在读取时恢复)?这是不好的做法吗?欢迎任何更好的解决方案。

最佳答案

只需修改 Credit 的 getter 和 setter 就可以了:

public function getValue(){
// always positive
return abs($this->value);
}

public function setValue(\float $val){
// always negative
$this->value = 0 - abs($val);
}

关于php - Doctrine2 - 将数字保存为负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59041600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com