数据集

|版本|功能调整||---|---||5.0.5|原生查询不支持返回数据集对象|数据库的查询结果也就是数据集,默认的配置下,数据集的类型是一个二维数组,可以配置成数据集类,就可以支持对数据集更多的对象化操作,需要使用数据集类功能,可以配置数据库的`resultset_type`参数如下:~~~return [// 数据库类型'type'=> 'mysql',// 数据库连接DSN配置'dsn'=> '',// 服务器地址'hostname'=> '127.0.0.1',// 数据库名'database'=> 'thinkphp',// 数据库用户名'username'=> 'root',// 数据库密码'password'=> '',// 数据库连接端口'hostport'=> '',// 数据库连接参数'params'=> [],// 数据库编码默认采用utf8'charset'=> 'utf8',// 数据库表前缀'prefix'=> 'think_',// 数据集返回类型'resultset_type' => 'collection',];~~~返回的数据集对象是`thinkCollection`,提供了和数组无差别用法,并且另外封装了一些额外的方法。可以直接使用数组的方式操作数据集对象,例如:~~~// 获取数据集$users = Db::name('user')->select();// 直接操作第一个元素$item= $users[0];// 获取数据集记录数$count = count($users);// 遍历数据集foreach($users as $user){echo $user['name'];echo $user['id'];}~~~需要注意的是,如果要判断数据集是否为空,不能直接使用`empty`判断,而必须使用数据集对象的`isEmpty`方法判断,例如:~~~$users = Db::name('user')->select();if($users->isEmpty()){echo '数据集为空';}~~~`Collection`类包含了下列主要方法:|方法|描述||---|---||isEmpty|是否为空||toArray|转换为数组||all|所有数据||merge|合并其它数据||diff|比较数组,返回差集||flip|交换数据中的键和值||intersect|比较数组,返回交集||keys|返回数据中的所有键名||pop|删除数据中的最后一个元素||shift|删除数据中的第一个元素||unshift|在数据开头插入一个元素||reduce|通过使用用户自定义函数,以字符串返回数组||reverse|数据倒序重排||chunk|数据分隔为多个数据块||each|给数据的每个元素执行回调||filter|用回调函数过滤数据中的元素||column|返回数据中的指定列||sort|对数据排序||shuffle|将数据打乱||slice|截取数据中的一部分|