Php Doctrine2-将数字另存为负值
我有一个保存发票的类-信用卡和费用。我有两个ORM\Entity类--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({ *
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