Fatal error: Call to a member function toArray() on array
Call to a member function toArray() on array
数据库的查询结果也就是数据集,默认的配置下,数据集的类型是一个二维数组,我们可以配置成数据集类,就可以支持对数据集更多的对象化操作,需要使用数据集类功能,可以配置数据库的resultset_type 参数.
database.php
// 数据集返回类型 'resultset_type' => 'collection',
或者在model设置属性
protected $resultSetType = 'collection';
V5.1.23+ 版本开始,你可以在查询的时候指定是否需要返回数据集(无需配置 resultset_type 参数)
// 获取数据集 $users = Db::name('user')->fetchCollection()->select();
模型的 all 和 select 查询方法默认返回数组,模型的 all 和 select 查询方法返回数据集对象 think\model\Collection ,该对象继承自think\Collection ,因此具有数据库的数据集类的所有方法,而且还提供了额外的模型操作方法。基本用法和数组一样,例如可以遍历和直接获取某个元素。
如果是数据集查询的话有两种情况,由于默认的数据集返回结果的类型是一个数组,因此无法调用 toArray方法,必须先转成数据集对象然后再使用 toArray 方法,系统提供了一个 collection 助手函数实现数据集对象的转换,代码如下
V5.0版本
$list = User::all(); if($list) { $list = collection($list)->toArray(); }