【小(xiǎo)編推薦】ThinkPHP3.2——數(shù)據讀≥→ (dú)取

2014-06-26  &✔ β>nbsp;|   發布者:梁國(guó)×✘©芳   |  &nb↕α♥€sp;查看(kàn):3320次

Thinkphp

在ThinkPHP中讀(dú)取數(shù)據的α✔≠(de)方式很(hěn)多(duō),通(t±↔≥ōng)常分(fēn)為(wèi)讀(dú)取數(sh↓ ù)據、讀(dú)取數(shù)據集和(hé)讀(dú)取字段值。

數(shù)據查詢方法支持的(de)連貫操作(zuò)方法有(yǒu):€ 

連貫操作(zuò) 作(zuò)用(yòng) 支持的(de)參數(shù)類型
where 用(yòng)于查詢或者更新條件(jiàn)↕  ¶的(de)定義 字符串、數(shù)組和(hé)對(duì)象
table 用(yòng)于定義要(yào)操作(zuò)的(d&γe)數(shù)據表名稱 字符串和(hé)數(shù)組
alias 用(yòng)于給當前數(shù)據表定義别→'★名 字符串
field 用(yòng)于定義要(yào)查詢的(de)字段(支持字段排Ω↑↓©除) 字符串和(hé)數(shù)組
order 用(yòng)于對(duì)結果排序 字符串和(hé)數(shù)組
group 用(yòng)于對(duì)查詢的(de)group支持 字符串
having 用(yòng)于對(duì)查詢的(de)haviσ ng支持 字符串
join 用(yòng)于對(duì)查詢的(de)joi♥♠®n支持 字符串和(hé)數(shù)組
union 用(yòng)于對(duì)查詢的(de)union支持 字符串、數(shù)組和(hé)對(du ↔ì)象
distinct 用(yòng)于查詢的(de)distinct支持 布爾值
lock 用(yòng)于數(shù)據庫的(de)鎖機(jī)制(zhì) 布爾值
cache 用(yòng)于查詢緩存 支持多(duō)個(gè)參數(shù)
relation 用(yòng)于關聯查詢(需要(yào)關聯模型支持) 字符串
result 用(yòng)于返回數(shù)據轉換 字符串
scope 用(yòng)于命名範圍 字符串、數(shù)組
bind 用(yòng)于數(shù)據綁定操作(zuò) 數(shù)組
comment 用(yòng)于SQL注釋 字符串

注意:某些(xiē)情況下(xià)有(yǒu)些(xiē)連貫操作(zuò)★±β∑是(shì)無效的(de),例如(rú)limit方法對(duì)find方法 ↕♣是(shì)無效的(de)。

讀(dú)取數(shù)據

讀(dú)取數(shù)據是(shì)指讀(d∑♣α×ú)取數(shù)據表中的(de)一(yī)行(xíng)數(shù)據(σ '或者關聯數(shù)據),主要(yào)通(tōng)過find方法完成,例如(rú):

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 查找status值為(wèi)1na♠πme值為(wèi)think的(de)用(yòng)戶數(shù)據
  3. $data = $User->where('status=1 AND name="think↓≈±php"')->find();
  4. dump($data);

find方法查詢數(shù)據的(de)時(shí)候可(kě)以配合相(xi£™àng)關的(de)連貫操作(zuò)方法,其中最關✔• ₹鍵的(de)則是(shì)where方法,如↑¶✘(rú)何使用(yòng)where方法我們€γ↑↕會(huì)在查詢語言章(zhāng)節中詳細描述。

如(rú)果查詢出錯(cuò),find方€λΩ法返回false,如(rú)果查詢結果為(wèi)空(kōng)返回NUL£>★€L,查詢成功則返回一(yī)個(gè)關聯數≈♠<β(shù)組(鍵值是(shì)字段名或者别名) $♣≤。 如(rú)果上(shàng)面的(de)查詢成功的(de)話(huà)‍<☆©,會(huì)輸出:

  1. array (size=3)
  2. 'name' => string 'thinkphp' (length=8)
  3. 'email' => string 'thinkphp@gmail.com' (length=18)
  4. 'status'=> int 1

即使滿足條件(jiàn)的(de)數(shù)據不(bù)止一(yī)個(gè✔π‍),find方法也(yě)隻會(huì) ♥π返回第一(yī)條記錄(可(kě)以通(tōng  )過order方法排序後查詢)。

還(hái)可(kě)以用(yòng)data方法獲取查詢後的(de≠←$≥)數(shù)據對(duì)象(查詢成功後)

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 查找status值為(wèi)1name值為(wèi)thi§λ€nk的(de)用(yòng)戶數(shù)據
  3. $User->where('status=1 AND name="t©≥≤§hinkphp"')->find();
  4. dump($User->data());

讀(dú)取數(shù)據集

讀(dú)取數(shù)據集其實就(jiù)是(shì)獲取數('Ωshù)據表中的(de)多(duō)行(xíng)記錄(以及關聯'$±數(shù)據),使用(yòng)select方法,使用(yòng)示例:

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 查找status值為(wèi)1的(de)用(yò±≈↔♣ng)戶數(shù)據 以創建時(shí)間(jiān)排序 返回10條數(s☆♣ hù)據
  3. $list = $User->where('status=1')->order('create_time')->limit(10)->select();

如(rú)果查詢出錯(cuò),select的(de)返回值是(shì↑ •)false,如(rú)果查詢結果為(wè₩₹↓↔i)空(kōng),則返回NULL,否則返回♥∞二維數(shù)組。

讀(dú)取字段值

讀(dú)取字段值其實就(jiù)是(shì)獲★ 取數(shù)據表中的(de)某個(gè)列的(de)多(duō)個(gè)γ₹σ<或者單個(gè)數(shù)據,最常用(yòng)£±ε®的(de)方法是(shì) getField方法。

示例如(rú)下(xià):

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 獲取ID為(wèi)3的(de)用(yòng)戶的(de)昵稱
  3. $nickname = $User->where('id=3')->getField('nickname');

默認情況下(xià),當隻有(yǒu)一(yī)個(gè)字段的(de)時£>≥↓(shí)候,返回滿足條件(jiàn)的★>(de)數(shù)據表中的(de)該字段的(de)第一(yī)行(®≥xíng)的(de)值。

如(rú)果需要(yào)返回整個(gè)列的(de)數(shù)據,可‌∞(kě)以用(yòng):

  1. $User->getField('id',true); // 獲取id數(shù)組
  2. //返回數(shù)據格式如(rú)arra£★σ£y(1,2,3,4,5)一(yī)維數(shù)組,其中va<'lue就(jiù)是(shì)id列的(∞>₩de)每行(xíng)的(de)值

如(rú)果傳入多(duō)個(gè)字× ₽₹段的(de)話(huà),默認返回一(yī)個(gè)關聯數(shù)組:

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 獲取所有(yǒu)用(yòng)戶的(de​♦λ )ID和(hé)昵稱列表
  3. $list = $User->getField('id,nickname');
  4. //兩個(gè)字段的(de)情況下(xiδ∞↑à)返回的(de)是(shì)array(`id`=>`nick$∞πname`)的(de)關聯數(shù)組,以id的(de)值為(wè♠∞£​i)key,nickname字段值為(wèi)value

這(zhè)樣返回的(de)list是(shì)一(yī)個(Ω™§∑gè)數(shù)組,鍵名是(shì)用(yòng★↕)戶的(de)id字段的(de)值,鍵值是(shì)用(yòn€↓g)戶的(de)昵稱nickname。

如(rú)果傳入多(duō)個(gè)字段的(de)名稱,例如(rú​φ€₩):

  1. $list = $User->getField('id,nickname,email');
  2. //返回的(de)數(shù)組格式是(shì)array(`id`=✘‍•÷>array(`id`=>value,`n♣>≈ickname`=>value,`email`='✘> >value))是(shì)一(yī)§"‍個(gè)二維數(shù)組,key還(hái)是(shì) β​"id字段的(de)值,但(dàn)value是(shì)整行(₹ ✔xíng)的(de)array數(shù)組,類似于sele→₩"÷ct()方法的(de)結果遍曆将id的(de)值設為(wèi)數(s×$λhù)組key

返回的(de)是(shì)一(yī)個(₽✘gè)二維數(shù)組,類似select方法的(de)返回<÷•結果,區(qū)别的(de)是(shì)這(zhè)₽♣'個(gè)二維數(shù)組的(de)鍵名是(shì)用(‌Ωyòng)戶的(de)id(準确的(de)說(shuō)是(‍≠ shì)getField方法的(de)第一(y↓¶ī)個(gè)字段名)。

如(rú)果我們傳入一(yī)個(gè)字符串分(fēn)隔符:

  1. $list = $User->getField('id,nickname,email',':');

那(nà)麽返回的(de)結果就(jiù)是(shì)一(yī)個(gè)數γ↕•(shù)組,鍵名是(shì)用(yòng)戶id,鍵±♥值是(shì) nickname:email的(de)輸出字符串。

getField方法還(hái)可(kě)以支持限制(zhì)™∞∑★數(shù)量,例如(rú):

  1. $this->getField('id,name',5); // 限制(zhì)返回5條記錄
  2. $this->getField('id',3); // 獲取id數(shù)組 限制(zhì)3條記錄

可(kě)以配合使用(yòng)order方法使用(yòng)。更多(ε"duō)的(de)查詢方法可(kě)以參考查詢語↔£言章(zhāng)節。