資料集(查詢建構器19)
資料庫的查詢結果也就是資料集,預設的情況下,資料集的類型是一個二維數組,但可以支援傳回資料集對象,使用fetchCollection方法:
// 获取数据集 $users = Db::name('user')->fetchCollection()->select(); // 遍历数据集 foreach($users as $user){ echo $user['name']; echo $user['id']; }
傳回的資料集物件是think\Collection,提供了和陣列無差別用法,並且另外封裝了一些額外的方法。
在模型中進行資料集查詢,全部傳回資料集對象,但使用的是think\model\Collection類別(繼承think\Collection),但用法是一致的。
可以直接使用陣列的方式操作資料集對象,例如:
// 获取数据集 $users = Db::name('user')->fetchCollection()->select(); // 直接操作第一个元素 $item = $users[0]; // 获取数据集记录数 $count = count($users); // 遍历数据集 foreach($users as $user){ echo $user['name']; echo $user['id']; }
fetchCollection方法也支援傳入使用的自訂集合類別名稱(必須繼承think\Collection)。
要注意的是,如果要判斷資料集是否為空,不能直接使用empty判斷,而必須使用資料集物件的isEmpty方法判斷,例如:
$users = Db::name('user')->fetchCollection()->select(); if($users->isEmpty()){ echo '数据集为空'; }
Collection類別包含了下列主要方法:
方法 | 描述 |
---|---|
isEmpty | 是否為空 |
toArray | 轉換為陣列 |
all | #所有資料 |
merge | 合併其它資料 |
#diff | 比較數組,傳回差集 |
flip | 交換資料中的鍵與值 |
#intersect | 比較數組,傳回交集 |
keys | 傳回資料中的所有鍵名 |
#pop | 刪除資料中的最後一個元素 |
shift | 刪除資料中的第一個元素 |
#unshift | 在資料開頭插入一個元素 |
push | 在結尾插入一個元素 |
#reduce | 透過使用使用者自訂函數,以字串傳回數組 |
reverse | 資料倒序重排 |
chunk | 資料分隔為多個資料區塊 |
each | 給資料的每個元素執行回呼 |
filter | 用回呼函數過濾資料中的元素 |
column | 傳回資料中的指定列 |
sort | 對資料排序 |
order | 指定欄位排序 |
#shuffle | 將資料打亂 |
slice | 截取資料中的一部分 |
#map | 用回呼函數處理陣列中的元素 |
where | 根據欄位條件過濾陣列中的元素 |
Like查詢篩選元素 | |
Not Like過濾元素 | |
IN查詢過濾陣列中的元素 | |
Not IN查詢過濾數組中的元素 | |
Between查詢過濾數組中的元素 | |
Not Between查詢過濾數組中的元素 |