Symfony2将整数列显示为字符串

时间:2012-03-13 17:55:39

标签: symfony doctrine-orm

我正在开发一个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的值,这不是我想要的

1 个答案:

答案 0 :(得分:0)

如果您希望列表包含美元符号,那么您可以专门为此目的创建另一个getter,例如:

public function getAmountWithCurrency()
{
    return '$'.number_format($this->amount, 2);
}

您的表单将使用与该字段关联的主getter,即getAmount(),因此如果在字段类型为某种类型的数字(float / integer / decimal)时返回字符串,它将永远不会工作。