1. 程式人生 > 程式設計 >tp5.1 框架資料庫-資料集操作例項分析

tp5.1 框架資料庫-資料集操作例項分析

本文例項講述了tp5.1 框架資料庫-資料集操作。分享給大家供大家參考,具體如下:

資料庫的查詢結果也就是資料集,預設的配置下,資料集的型別是一個二維陣列,我們可以配置成資料集類,就可以支援對資料集更多的物件化操作,需要使用資料集類功能,可以配置資料庫的resultset_type引數如下:

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類,但用法是一致的。

可以直接使用陣列的方式操作資料集物件,例如:

// 獲取資料集
$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引數)

// 獲取資料集
$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方法判斷,例如:

$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相關內容感興趣的讀者可檢視本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術總結》。

希望本文所述對大家基於ThinkPHP框架的PHP程式設計有所幫助。