2017-09-30 22:30:44 2959次浏览 3条回答 0 悬赏 20 金钱

使用AR查询出来的数据int类型的数据,也变成string了。

怎么让他根据数据库的类型返回!在线等,还挺急的 !

补充于 2017-10-11 23:03

按你的代码操作一遍,结果和你结果不同。是有什么配置导致这个问题? 但是我都是默认配置没有增加什么啊。get了一下版本是最新版本的2.0.13-dev。

TIM截图20171011224419.png

TIM截图20171011224405.png

TIM截图20171011225053.png

TIM截图20171011225424.png

最佳答案

  • sjg20010414 发布于 2017-10-11 12:16 举报

    CREATE TABLE tbl_temp (
    id int(11) NOT NULL,
    name varchar(64) NOT NULL,
    value int(10) UNSIGNED NOT NULL,
    count int(10) UNSIGNED NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

                $model1 = \app\models\Temp::find()->asArray()->one();
                var_dump($model1);
                $model2 = \app\models\Temp::find()->one();
                $a = \yii\helpers\ArrayHelper::toArray($model2);
                var_dump($a);
                echo \yii\helpers\Json::encode($a);
    

    /home/x201/PhpstormProjects/myblog/views/site/index.php:25:
    array (size=4)
    'id' => string '1' (length=1)
    'name' => string 'aaa' (length=3)
    'value' => string '123' (length=3)
    'count' => string '456' (length=3)
    /home/x201/PhpstormProjects/myblog/views/site/index.php:28:
    array (size=4)
    'id' => int 1
    'name' => string 'aaa' (length=3)
    'value' => int 123
    'count' => int 456

    {"id":1,"name":"aaa","value":123,"count":456}

    没有遇到楼主的问题啊,楼主怎么试出来的?

    1 条回复
    回复于 2017-10-11 23:04 回复

    @sjg20010414

  • 回答于 2017-10-09 11:02 举报

    你使用了asArray()了吧,这个方法把查出的所有数据都返回了string类型,
    你可以使用ArrayHelper::toArray(AR数据对象)

    1 条回复
    回复于 2017-10-09 23:29 回复

    是用了asArray(),我改成ArrayHelper,试了一下不行。 查了资料说是因为我字段做成了无符号(unsigned),客户端有类型要求,难道要一个一个转?

  • 回答于 2017-10-12 10:38 举报

    很多问题,还是要靠自己一步步来诊断

    你先你的代码 $model1 = TblTemp::find()->one(); 一句下面加
    var_dump($model1->attributes);
    看看模型实例的属性类型是否符合预期,再来考虑是你的版本AR类被修改了还是ArrayHelper助手类被修改了(我的版本是 Yii2 version 2.0.8)

    1 条回复
    回复于 2017-10-13 00:10 回复

    不行,按照你给的sql语句,怎么弄都是string。我重新做了一个2.0.8的项目也是string。很崩溃啊~~

您需要登录后才可以回答。登录 | 立即注册
Jason_
副总裁

Jason_ 阿联酋

注册时间:2014-06-05
最后登录:2023-03-09
在线时长:106小时40分
  • 粉丝15
  • 金钱8250
  • 威望0
  • 积分9310

热门问题