thinkphp5报错 Call to a member function toArray() on array


thinkphp5内报错Call to a member function toArray() on array

使用场景

使用模型查询后,想获取不包含对象内容的数组结构的结果。


使用方式

$gardenAuth = new GardenAuth();
$res = $gardenAuth->where(['id'=>$id])->select()->toArray();

结果 

Call to a member function toArray() on array

原因

数据库(database.php)里设置的返回数据结果为数组类型

'resultset_type' => 'array'

解决方式

方法一:

全局:修改Config.php

'resultset_type' => 'collection'

方法二:

局部:在模型中加入

protected $resultSetType = 'collection';

方法三:

推荐,thinkphp自带的一个方法

if (!function_exists('collection')) {
    /**
     * 数组转换为数据集对象
     * @param array $resultSet 数据集数组
     * @return \think\model\Collection|\think\Collection
     */
    function collection($resultSet)
    {
        $item = current($resultSet);
        if ($item instanceof Model) {
            return \think\model\Collection::make($resultSet);
        } else {
            return \think\Collection::make($resultSet);
        }
    }
}

调用方法:
$res = collection($res)->toArray();


鼎云博客
  • 最新评论
  • 总共0条评论