教义中的十进制返回字符串

mon*_*ser 5 doctrine symfony

我有一个像这样的十进制字段

 /**
 *
 * @ORM\Column(name="foo", type="decimal", precision=0, scale=2, nullable=false, unique=false)
 */
private $foo;
Run Code Online (Sandbox Code Playgroud)

当我使用getFoo()或时,QueryBuilder我的值是“ 159.79”而不是159.79。如何获得正确的类型?

Roo*_*eyl 7

即使您已在Doctrine批注中将其声明为十进制,但在检索时,PHP会将其视为字符串。
参考这里

从数据库中检索到的值始终转换为PHP的字符串类型,如果不存在数据,则返回null。

您可以将吸气剂更改为浮点型,然后返回。
例如

public function getFoo()
{
    return (float) $this->foo;
}
Run Code Online (Sandbox Code Playgroud)

要么

public function getFoo()
{
    return floatval($this->foo);
}
Run Code Online (Sandbox Code Playgroud)

看看类型戏法的更多信息。
更多信息在floatVal() 这里

  • 是的,但是如果我使用querybuilder,我不会使用getFoo() (3认同)