Symfony/Doctrine:为什么我的整数Entity属性以字符串形式返回?

B. *_*os. 5 php symfony doctrine-orm

我有一个实体,其属性定义如下:

/**
 * @var integer
 *
 * @ORM\Column(name="weight", type="integer")
 */
private $weight;
Run Code Online (Sandbox Code Playgroud)

我试图解决一个错误并使用var_dump()来了解发生了什么......

答复是:

string '20' (length=2)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么$ weight会以字符串形式返回...它不应该是一个整数吗?

int 20
Run Code Online (Sandbox Code Playgroud)

或者我应该在我的业务逻辑中处理它?


编辑(我怎么称为var_dump()):

我有一个名为"Calculator"的类,它迭代$ items并使用$ weight属性.是这样的:

控制器:

$calculator->calculate($category->getItems());
Run Code Online (Sandbox Code Playgroud)

计算器:

foreach($items as $item) {
    //logic...

    var_dump($item->getWeight());
}
Run Code Online (Sandbox Code Playgroud)

编辑(数据库列架构):

这是数据库中的字段:

weight  int(11) 
Run Code Online (Sandbox Code Playgroud)

tch*_*hap 0

您使用什么版本的 PHPMySQL 驱动程序?

\n\n

我不确切知道 Symfony 如何转换(或不转换)数据库结果,但如果您使用 PHP 5.2,这可能很正常:您从 PHP 中的 MySQL 获得的任何变量始终是一个字符串,即使它\ 是数据库中的一个整数。

\n\n

在 PHP 5.3 中,如果使用正确的驱动程序,情况会有所不同(mysqlnd\xe2\x80\x94 请参阅http://blog.ulf-wendel.de/2008/pdo_mysqlnd-the-new-features-of-pdo_mysql/

\n\n

有关更多详细信息,请参阅此答案:\n /sf/answers/170146021/

\n\n

希望有帮助!

\n