tp5.1 框架數(shù)據(jù)庫-數(shù)據(jù)集操作實例分析
本文實例講述了tp5.1 框架數(shù)據(jù)庫-數(shù)據(jù)集操作。分享給大家供大家參考,具體如下:
數(shù)據(jù)庫的查詢結(jié)果也就是數(shù)據(jù)集,默認的配置下,數(shù)據(jù)集的類型是一個二維數(shù)組,我們可以配置成數(shù)據(jù)集類,就可以支持對數(shù)據(jù)集更多的對象化操作,需要使用數(shù)據(jù)集類功能,可以配置數(shù)據(jù)庫的resultset_type參數(shù)如下:
return [ // 數(shù)據(jù)庫類型 'type' => 'mysql', // 數(shù)據(jù)庫連接DSN配置 'dsn' => '', // 服務(wù)器地址 'hostname' => '127.0.0.1', // 數(shù)據(jù)庫名 'database' => 'thinkphp', // 數(shù)據(jù)庫用戶名 'username' => 'root', // 數(shù)據(jù)庫密碼 'password' => '', // 數(shù)據(jù)庫連接端口 'hostport' => '', // 數(shù)據(jù)庫連接參數(shù) 'params' => [], // 數(shù)據(jù)庫編碼默認采用utf8 'charset' => 'utf8', // 數(shù)據(jù)庫表前綴 'prefix' => 'think_', // 數(shù)據(jù)集返回類型 'resultset_type' => 'collection', ];
返回的數(shù)據(jù)集對象是think\Collection,提供了和數(shù)組無差別用法,并且另外封裝了一些額外的方法。
在模型中進行數(shù)據(jù)集查詢,全部返回數(shù)據(jù)集對象,但使用的是
think\model\Collection類,但用法是一致的。
可以直接使用數(shù)組的方式操作數(shù)據(jù)集對象,例如:
// 獲取數(shù)據(jù)集
$users = Db::name('user')->select();
// 直接操作第一個元素
$item = $users[0];
// 獲取數(shù)據(jù)集記錄數(shù)
$count = count($users);
// 遍歷數(shù)據(jù)集
foreach($users as $user){
echo $user['name'];
echo $user['id'];
}
V5.1.23+版本開始,你可以在查詢的時候指定是否需要返回數(shù)據(jù)集(無需配置resultset_type參數(shù))
// 獲取數(shù)據(jù)集
$users = Db::name('user')->fetchCollection()->select();
// 直接操作第一個元素
$item = $users[0];
// 獲取數(shù)據(jù)集記錄數(shù)
$count = count($users);
// 遍歷數(shù)據(jù)集
foreach($users as $user){
echo $user['name'];
echo $user['id'];
}
V5.1.24+版本開始,fetchCollection方法支持傳入使用的集合類名稱。
需要注意的是,如果要判斷數(shù)據(jù)集是否為空,不能直接使用empty判斷,而必須使用數(shù)據(jù)集對象的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 | 返回數(shù)據(jù)中的所有鍵名 |
| pop | 刪除數(shù)據(jù)中的最后一個元素 |
| shift | 刪除數(shù)據(jù)中的第一個元素 |
| unshift | 在數(shù)據(jù)開頭插入一個元素 |
| reduce | 通過使用用戶自定義函數(shù),以字符串返回數(shù)組 |
| reverse | 數(shù)據(jù)倒序重排 |
| chunk | 數(shù)據(jù)分隔為多個數(shù)據(jù)塊 |
| each | 給數(shù)據(jù)的每個元素執(zhí)行回調(diào) |
| filter | 用回調(diào)函數(shù)過濾數(shù)據(jù)中的元素 |
| column | 返回數(shù)據(jù)中的指定列 |
| sort | 對數(shù)據(jù)排序 |
| shuffle | 將數(shù)據(jù)打亂 |
| slice | 截取數(shù)據(jù)中的一部分 |
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計有所幫助。
相關(guān)文章
淺析ThinkPHP中execute和query方法的區(qū)別
初學(xué)ThinkPHP的時候,很多人都對execute()和query()方法的區(qū)別搞不懂,本文就此淺析二者的區(qū)別,需要的朋友可以參考下2014-06-06
解決PHP里大量數(shù)據(jù)循環(huán)時內(nèi)存耗盡的方法
錯誤信息提示最大內(nèi)存已經(jīng)耗盡,該如何解決呢?下面小編給大家解決PHP里大量數(shù)據(jù)循環(huán)時內(nèi)存耗盡的問題,需要的朋友可以參考下2015-10-10
php版微信公眾平臺實現(xiàn)預(yù)約提交后發(fā)送email的方法
這篇文章主要介紹了php版微信公眾平臺實現(xiàn)預(yù)約提交后發(fā)送email的方法,結(jié)合實例形式分析了php微信公眾平臺郵件發(fā)送的相關(guān)操作技巧,需要的朋友可以參考下2016-09-09
關(guān)于PHP定時發(fā)送服務(wù)的解決辦法
這篇文章主要介紹了關(guān)于PHP定時發(fā)送服務(wù)的解決辦法,需要的朋友可以參考下2017-04-04

