【发布时间】:2012-10-19 00:09:41
【问题描述】:
我正在使用 Silex 微框架构建一个简单的 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);
});
任何人都可以向我解释为什么 Doctrine DBAL 只返回 string 数据类型,而不管列定义吗?下面是使用 PHP var_dump($recordset) 函数的相应输出(注意 id 字段应该是整数类型,而不是字符串):
array(1) {
[0]=>
array(2) {
["id"]=>
string(5) "10043"
["name"]=>
string(20) "Hey, I'm just a test"
}
}
感谢您的帮助。
【问题讨论】:
-
由于 DBAL 内部使用 PDO,我相信这是 stackoverflow.com/questions/1197005/… 的副本
-
@Maerlyn - 我知道 PDO 问题,但是在查看 Doctrine 源代码时,我注意到每个数据库表列都映射到各自的 DBAL 类型,这暴露了方法
convertToDatabaseValue和 @ 987654328@。但是这些方法似乎不会影响查询的结果。为什么? -
我不了解教义的内部结构,您可以在 github 上的教义存储库上打开票证以获得深入的答案(如果是错误,可能还有修复)。
标签: doctrine-orm silex dbal