• 【Tp3.2升级记录】升级ThinkPhp5.0后,select查询的结果问题处理


    前言:最近由于各种原因,需要将一个TP3.2.0项目升级到比较新的版本,以减少系统漏洞,目前目标是5.0的最新版本。

    问题:由TP3.2升级TP5.0后,select查询的结果有所不同,导致foreach使用的时候出现问题,按官方文档的描述是:  

      新版的模型查询返回默认对象,系统默认增加了toArray方法,许多开发者在all或select尝试使用toArray来转换为数组,在此希望开发者能理解对象的概念,尝试使用对象进行数据的使用,或者使用db方法进行数据库的操作,也提醒一下部分滥用toArray的开发者,all或select结果是对象的数组集合,是无法使用toArray进行转换的。

      简单来说就是查询的结果原来返回的是数组,现在返回的是一个数组,数组中子一级是对象类型,而且不能直接使用toArray处理。

    解决方法:

      将select()查询的对象结果转化一下,转化为数组:

    use thinkCollection
    $list = $this->field($field)->where($map)->order('sort')->select();
    // Collection是TP5的内置类
    $list = (new Collection($list))->toArray();

    嗯,就这样,就酱!

  • 相关阅读:
    ZJU 1610
    zju1484
    字符串赋值与初始化
    内核线程、内核级线程(轻量级进程)和用户级线程
    Mysql基础
    结构体的sizeof
    对象属性值读取问题
    返回引用类型
    操作符重载为成员函数、非成员函数与友元函数的区别
    运算符优先级
  • 原文地址:https://www.cnblogs.com/wxdblog/p/14611976.html
Copyright © 2020-2023  润新知