本文實例講述了tp5.1 框架數據庫-數據集操作。分享給大家供大家參考,具體如下:
數據庫的查詢結果也就是數據集,默認的配置下,數據集的類型是一個二維數組,我們可以配置成數據集類,就可以支持對數據集更多的對象化操作,需要使用數據集類功能,可以配置數據庫的resultset_type
參數如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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' , ]; |
返回的數據集對象是think\Collection
,提供了和數組無差別用法,并且另外封裝了一些額外的方法。
在模型中進行數據集查詢,全部返回數據集對象,但使用的是
think\model\Collection
類,但用法是一致的。
可以直接使用數組的方式操作數據集對象,例如:
1
2
3
4
5
6
7
8
9
10
11
|
// 獲取數據集 $users = Db::name( 'user' )->select(); // 直接操作第一個元素 $item = $users [0]; // 獲取數據集記錄數 $count = count ( $users ); // 遍歷數據集 foreach ( $users as $user ){ echo $user [ 'name' ]; echo $user [ 'id' ]; } |
V5.1.23+
版本開始,你可以在查詢的時候指定是否需要返回數據集(無需配置resultset_type
參數)
1
2
3
4
5
6
7
8
9
10
11
|
// 獲取數據集 $users = Db::name( 'user' )->fetchCollection()->select(); // 直接操作第一個元素 $item = $users [0]; // 獲取數據集記錄數 $count = count ( $users ); // 遍歷數據集 foreach ( $users as $user ){ echo $user [ 'name' ]; echo $user [ 'id' ]; } |
V5.1.24+
版本開始,fetchCollection
方法支持傳入使用的集合類名稱。
需要注意的是,如果要判斷數據集是否為空,不能直接使用empty
判斷,而必須使用數據集對象的isEmpty
方法判斷,例如:
1
2
3
4
|
$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 | 截取數據中的一部分 |
希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。
原文鏈接:https://blog.csdn.net/qq_42176520/article/details/88708998