tp5.1 框架數(shù)據(jù)庫(kù)-數(shù)據(jù)集操作實(shí)例分析
本文實(shí)例講述了tp5.1 框架數(shù)據(jù)庫(kù)-數(shù)據(jù)集操作。分享給大家供大家參考,具體如下:
數(shù)據(jù)庫(kù)的查詢結(jié)果也就是數(shù)據(jù)集,默認(rèn)的配置下,數(shù)據(jù)集的類(lèi)型是一個(gè)二維數(shù)組,我們可以配置成數(shù)據(jù)集類(lèi),就可以支持對(duì)數(shù)據(jù)集更多的對(duì)象化操作,需要使用數(shù)據(jù)集類(lèi)功能,可以配置數(shù)據(jù)庫(kù)的resultset_type
參數(shù)如下:
return [ // 數(shù)據(jù)庫(kù)類(lèi)型 '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ù)集返回類(lèi)型 'resultset_type' => 'collection', ];
返回的數(shù)據(jù)集對(duì)象是think\Collection
,提供了和數(shù)組無(wú)差別用法,并且另外封裝了一些額外的方法。
在模型中進(jìn)行數(shù)據(jù)集查詢,全部返回?cái)?shù)據(jù)集對(duì)象,但使用的是
think\model\Collection
類(lèi),但用法是一致的。
可以直接使用數(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']; }
V5.1.23+
版本開(kāi)始,你可以在查詢的時(shí)候指定是否需要返回?cái)?shù)據(jù)集(無(wú)需配置resultset_type
參數(shù))
// 獲取數(shù)據(jù)集 $users = Db::name('user')->fetchCollection()->select(); // 直接操作第一個(gè)元素 $item = $users[0]; // 獲取數(shù)據(jù)集記錄數(shù) $count = count($users); // 遍歷數(shù)據(jù)集 foreach($users as $user){ echo $user['name']; echo $user['id']; }
V5.1.24+
版本開(kāi)始,fetchCollection
方法支持傳入使用的集合類(lèi)名稱(chēng)。
需要注意的是,如果要判斷數(shù)據(jù)集是否為空,不能直接使用empty
判斷,而必須使用數(shù)據(jù)集對(duì)象的isEmpty
方法判斷,例如:
$users = Db::name('user')->select(); if($users->isEmpty()){ echo '數(shù)據(jù)集為空'; }
Collection
類(lèi)包含了下列主要方法:
方法 | 描述 |
---|---|
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ù)開(kāi)頭插入一個(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ù)中的一部分 |
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《ThinkPHP入門(mén)教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門(mén)教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門(mén)教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
thinkPHP導(dǎo)出csv文件及用表格輸出excel的方法
這篇文章主要介紹了thinkPHP導(dǎo)出csv文件及用表格輸出excel的方法,涉及thinkPHP針對(duì)表格與Excel文件的操作技巧,需要的朋友可以參考下2015-12-12淺談laravel orm 中的一對(duì)多關(guān)系 hasMany
今天小編就為大家分享一篇淺談laravel orm 中的一對(duì)多關(guān)系 hasMany,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10joomla實(shí)現(xiàn)注冊(cè)用戶添加新字段的方法
這篇文章主要介紹了joomla實(shí)現(xiàn)注冊(cè)用戶添加新字段的方法,實(shí)例分析了Joomla注冊(cè)用戶添加新字段的步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-05-05使用pthreads實(shí)現(xiàn)真正的PHP多線程(需PHP5.3以上版本)
PHP 5.3 以上版本,使用pthreads PHP擴(kuò)展,可以使PHP真正地支持多線程。多線程在處理重復(fù)性的循環(huán)任務(wù),能夠大大縮短程序執(zhí)行時(shí)間2014-05-05ThinkPHP框架實(shí)現(xiàn)FTP圖片上傳功能示例
這篇文章主要介紹了ThinkPHP框架實(shí)現(xiàn)FTP圖片上傳功能,結(jié)合實(shí)例形式分析了thinkPHP框架實(shí)現(xiàn)ftp圖片上傳功能相關(guān)的配置、文件傳輸功能等操作技巧,需要的朋友可以參考下2019-04-04基于PHP的簡(jiǎn)單采集數(shù)據(jù)入庫(kù)程序
前幾天有一朋友要我?guī)妥鲆粋€(gè)采集新聞信息的程序,抽了點(diǎn)時(shí)間寫(xiě)了個(gè)PHP版本的,隨筆記錄下。2014-07-07