2015-09-15 19:30:17 6515次浏览 2条回答 2 悬赏 10 金钱

最近用YII做一个后台项目, 因为要转化成json呈现出来,发现直接用php的 json_encode()直接转化createCommand()->...出来的数据都变成了字符串格式,原本很普通的int也被加了引号.

ps: 自己手写数组就用json_encode()就不会.

这个createCommand官方文档也没说.

最佳答案

  • ice.deng 发布于 2016-01-19 20:18 举报

    这个与YII没关系,是PDO的默认处理,解决方法只需在配置中的db配置中加上attributes的相关配置就行了,如下:

    
    'components' => [
            'db' => [
                'class' => 'yii\db\Connection',
                'dsn' => 'mysql:host=...',
                'username' => '...',
                'password' => '...',
                'charset' => 'utf8',
                'tablePrefix' => '',
                'attributes' => [
                    PDO::ATTR_STRINGIFY_FETCHES => false,
                    PDO::ATTR_EMULATE_PREPARES => false,
                ]
            ],
    
    
    
    1 条回复
    回复于 2016-01-26 11:42 回复

    原来老想着从php本身解决,结果是pdo这个东西,真是太感谢了.

    , 觉得很赞
  • 回答于 2015-09-16 08:44 举报

    你确定int不是字符整型数? 你可以指定json_encode的第二个参数为JSON_NUMERIC_CHECK试一下能否解决这个问题。

    1 条回复
    回复于 2016-01-26 11:15 回复

    这个东西会吧所有 是数字的字符串也变成数字类型返回.

您需要登录后才可以回答。登录 | 立即注册
daowojia
主管

daowojia sz

注册时间:2015-02-02
最后登录:2019-04-23
在线时长:20小时29分
  • 粉丝3
  • 金钱390
  • 威望0
  • 积分590

热门问题