我正在开发一个Symfony2应用程序,用于管理我的每月预算。
我有一个实体Expense,其数量列在db
中保存为float/**
* @ORM\Table(name="expenses")
* @ORM\Entity
*/
class Expense
{
/**
* @ORM\Column(name="amount", type="float", nullable=false)
*/
private $amount;
在我的商品详情中,我想将金额显示为字符串,如下所示:
public function getAmount()
{
return '$'.number_format($this->amount, 2);
}
但是当我转到我的表单添加新费用时,我收到以下错误:
Expected argument of type "numeric", "string" given
当我将getAmount函数更改为仅返回$ this-> amount时,我没有收到任何错误。
如何将$ amount的值保存为db中的float,但在查看值时将其显示为字符串?
更新
如果我将映射更改为
@ORM\Column(name="amount", type="string", nullable=false)
然后它可以工作,但是我的空表单在金额字段中给了我一个$ 0,00的值,这不是我想要的
答案 0 :(得分:0)
如果您希望列表包含美元符号,那么您可以专门为此目的创建另一个getter,例如:
public function getAmountWithCurrency()
{
return '$'.number_format($this->amount, 2);
}
您的表单将使用与该字段关联的主getter,即getAmount(),因此如果在字段类型为某种类型的数字(float / integer / decimal)时返回字符串,它将永远不会工作。