【问题标题】:Doctrine 2 DBAL returns only string datatypesDoctrine 2 DBAL 仅返回字符串数据类型
【发布时间】: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


【解决方案1】:

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

在没有使用 Doctrine 2 ORM 层提供的映射能力的情况下,我发现this 答案是解决 DBAL 限制的可能方法。

【讨论】:

    猜你喜欢
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2021-07-29
    • 2017-04-07
    • 2014-04-30
    • 2023-01-25
    • 2016-07-04
    相关资源
    最近更新 更多