#### 数据集
模型的单个数据查询返回的都是模型对象实例,但查询多个数据的时候默认返回的是一个包含模型对象实例的数组。框架提供了一个Collection数据集对象来进行统一的模型的对象化操作,替代默认的数组数据集更好的封装自己的数据处理和业务逻辑。
设置数据集对象后,查询多个数据的方法(包括Db类的select和模型类的all方法)返回的结果类型就会变成think\model\Collection对象实例。
有两种方式可以设置,第一种方式是全局设置数据库的配置参数(默认设置为array):
~~~
// 设置数据集返回类型
'resultset_type' => 'collection',
~~~
该设置会影响所有的查询(包括Db类和模型类)。
第二种方式是在模型类中添加属性设置
~~~
// 设置模型的数据集返回类型
protected $resultSetType = 'collection';
~~~
该设置仅仅影响设置的模型中的查询结果,如果需要多个模型或者全部模型支持,可以使用继承或者使用第一种数据库配置方式。
数据集对象和普通的二维数组在使用上的一个最大的区别就是数据是否为空的判断,二维数组的数据集判断数据为空直接使用
~~~
$resultSet = User::all();
if (empty($resultSet)) {
echo '数据集为空';
}
~~~
如果使用数据集对象的话,需要改成:
~~~
$resultSet = User::all();
if ($resultSet->isEmpty()) {
echo '数据集为空';
}
~~~
通用的判断数据是否为空的方式可以用
~~~
$resultSet = User::all();
if (0 == count($resultSet)) {
echo '数据集为空';
}
~~~