Php Doctrine2-将数字另存为负值

Php Doctrine2-将数字另存为负值,php,mysql,symfony,doctrine,Php,Mysql,Symfony,Doctrine,我有一个保存发票的类-信用卡和费用。我有两个ORM\Entity类--Charge和Credit--它们使用ORM\DiscriminatorMap /** * @ORM\Table(name="transaction") * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="type", type="string") * @ORM\DiscriminatorMap({ *

我有一个保存发票的类-信用卡和费用。我有两个ORM\Entity类--
Charge
Credit
--它们使用
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聚合函数来获取帐户的总和,这将在不做任何工作的情况下同时考虑费用和信用卡

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

我如何才能让条令仅在写入DB时将值转换为负值(对于学分)(并在读取时还原)?
这是坏习惯吗?欢迎任何更好的解决方案。

只需修改
积分的getter和setter即可:

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

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

你的getter(例如
getValue()
)返回返回值的绝对值,比如
returnabs($this->value)我担心这不适用于反序列化,但它可以工作!嘿,很酷,谢谢你接受我的答案并获得好评。抱歉@craigh,事情不是这样的。当你发表评论时,我已经在写我的答案了。如果你想发布答案,为什么要发布评论?没什么大不了的。没问题。祝福:D