Doctrine orm 原则2 DBAL只返回字符串数据类型

Doctrine orm 原则2 DBAL只返回字符串数据类型,doctrine-orm,silex,dbal,Doctrine Orm,Silex,Dbal,我正在使用Silex micro framework构建一个简单的REST后端 在每个控制器中,我对MySQL数据库运行一些查询(使用Doctrine 2 DBAL API),如下所示: $app->get('/customers', function (Application $app) { $recordset = $app['db']->fetchAll('SELECT id, name FROM Customers'); return $app->jso


我正在使用Silex micro framework构建一个简单的REST后端

在每个控制器中,我对MySQL数据库运行一些查询(使用Doctrine 2 DBAL API),如下所示:

$app->get('/customers', function (Application $app) {
    $recordset = $app['db']->fetchAll('SELECT id, name FROM Customers');
    return $app->json($recordset);
});
有人能解释一下为什么DBAL只返回
string
datatype,而不考虑列定义吗?下面是使用PHP
var\u dump($recordset)
函数的相应输出(注意
id
字段应为整型,而不是字符串):


感谢您的帮助。

正如Maerlyn所建议的,这似乎是PDO驱动程序的一个已知问题,因此也是DBAL的一个已知问题


在没有利用Doctrine 2 ORM层提供的映射功能的情况下,我找到了一个解决DBAL限制的可能方法。

由于DBAL在内部使用PDO,我相信这是@Maerlyn的复制品-我知道PDO问题,但是,在调查Doctrine源代码时,我注意到,每个数据库表列都映射到相应的DBAL类型,这公开了方法
convertToDatabaseValue
convertophpvalue
。但是,这些方法似乎不会影响查询结果。为什么?我不知道条令的内部结构,您可以在github上的条令存储库上打开一张票据,以获得深入的答案(如果是bug,可能还有修复)。
array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    string(5) "10043"
    ["name"]=>
    string(20) "Hey, I'm just a test"
  }
}