#### 數據集
模型的單個數據查詢返回的都是模型對象實例,但查詢多個數據的時候默認返回的是一個包含模型對象實例的數組。框架提供了一個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 '數據集為空';
}
~~~