數(shù)據(jù)集
版本 | 功能調(diào)整 |
---|---|
5.0.5 | 原生查詢不支持返回?cái)?shù)據(jù)集對(duì)象 |
數(shù)據(jù)庫(kù)的查詢結(jié)果也就是數(shù)據(jù)集,默認(rèn)的配置下,數(shù)據(jù)集的類型是一個(gè)二維數(shù)組,我們可以配置成數(shù)據(jù)集類,就可以支持對(duì)數(shù)據(jù)集更多的對(duì)象化操作,需要使用數(shù)據(jù)集類功能,可以配置數(shù)據(jù)庫(kù)的resultset_type
參數(shù)如下:
return [
// 數(shù)據(jù)庫(kù)類型
'type' => 'mysql',
// 數(shù)據(jù)庫(kù)連接DSN配置
'dsn' => '',
// 服務(wù)器地址
'hostname' => '127.0.0.1',
// 數(shù)據(jù)庫(kù)名
'database' => 'thinkphp',
// 數(shù)據(jù)庫(kù)用戶名
'username' => 'root',
// 數(shù)據(jù)庫(kù)密碼
'password' => '',
// 數(shù)據(jù)庫(kù)連接端口
'hostport' => '',
// 數(shù)據(jù)庫(kù)連接參數(shù)
'params' => [],
// 數(shù)據(jù)庫(kù)編碼默認(rèn)采用utf8
'charset' => 'utf8',
// 數(shù)據(jù)庫(kù)表前綴
'prefix' => 'think_',
// 數(shù)據(jù)集返回類型
'resultset_type' => 'collection',
];
返回的數(shù)據(jù)集對(duì)象是think\Collection
,提供了和數(shù)組無(wú)差別用法,并且另外封裝了一些額外的方法。
可以直接使用數(shù)組的方式操作數(shù)據(jù)集對(duì)象,例如:
// 獲取數(shù)據(jù)集
$users = Db::name('user')->select();
// 直接操作第一個(gè)元素
$item = $users[0];
// 獲取數(shù)據(jù)集記錄數(shù)
$count = count($users);
// 遍歷數(shù)據(jù)集
foreach($users as $user){
echo $user['name'];
echo $user['id'];
}
需要注意的是,如果要判斷數(shù)據(jù)集是否為空,不能直接使用empty
判斷,而必須使用數(shù)據(jù)集對(duì)象的isEmpty
方法判斷,例如:
$users = Db::name('user')->select();
if($users->isEmpty()){
echo '數(shù)據(jù)集為空';
}
Collection
類包含了下列主要方法:
方法 | 描述 |
---|---|
isEmpty | 是否為空 |
toArray | 轉(zhuǎn)換為數(shù)組 |
all | 所有數(shù)據(jù) |
merge | 合并其它數(shù)據(jù) |
diff | 比較數(shù)組,返回差集 |
flip | 交換數(shù)據(jù)中的鍵和值 |
intersect | 比較數(shù)組,返回交集 |
keys | 返回?cái)?shù)據(jù)中的所有鍵名 |
pop | 刪除數(shù)據(jù)中的最后一個(gè)元素 |
shift | 刪除數(shù)據(jù)中的第一個(gè)元素 |
unshift | 在數(shù)據(jù)開頭插入一個(gè)元素 |
reduce | 通過(guò)使用用戶自定義函數(shù),以字符串返回?cái)?shù)組 |
reverse | 數(shù)據(jù)倒序重排 |
chunk | 數(shù)據(jù)分隔為多個(gè)數(shù)據(jù)塊 |
each | 給數(shù)據(jù)的每個(gè)元素執(zhí)行回調(diào) |
filter | 用回調(diào)函數(shù)過(guò)濾數(shù)據(jù)中的元素 |
column | 返回?cái)?shù)據(jù)中的指定列 |
sort | 對(duì)數(shù)據(jù)排序 |
shuffle | 將數(shù)據(jù)打亂 |
slice | 截取數(shù)據(jù)中的一部分 |
文檔最后更新時(shí)間:2018-04-26 09:58:00
未解決你的問(wèn)題?請(qǐng)到「問(wèn)答社區(qū)」反饋你遇到的問(wèn)題