在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ú):
$User = M("User"); // 實例化(huà)User對(duì)象// 查找status值為(wèi)1na♠πme值為(wèi)think的(de)用(yòng)戶數(shù)據$data = $User->where('status=1 AND name="think↓≈±php"')->find();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ì)輸出:
array (size=3)'name' => string 'thinkphp' (length=8)'email' => string 'thinkphp@gmail.com' (length=18)'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ì)象(查詢成功後)
$User = M("User"); // 實例化(huà)User對(duì)象// 查找status值為(wèi)1name值為(wèi)thi§λ€nk的(de)用(yòng)戶數(shù)據$User->where('status=1 AND name="t©≥≤§hinkphp"')->find();dump($User->data());
讀(dú)取數(shù)據集
讀(dú)取數(shù)據集其實就(jiù)是(shì)獲取數('Ωshù)據表中的(de)多(duō)行(xíng)記錄(以及關聯'$±數(shù)據),使用(yòng)select方法,使用(yòng)示例:
$User = M("User"); // 實例化(huà)User對(duì)象// 查找status值為(wèi)1的(de)用(yò±≈↔♣ng)戶數(shù)據 以創建時(shí)間(jiān)排序 返回10條數(s☆♣ hù)據$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à):
$User = M("User"); // 實例化(huà)User對(duì)象// 獲取ID為(wèi)3的(de)用(yòng)戶的(de)昵稱$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):
$User->getField('id',true); // 獲取id數(shù)組//返回數(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ù)組:
$User = M("User"); // 實例化(huà)User對(duì)象// 獲取所有(yǒu)用(yòng)戶的(de♦λ )ID和(hé)昵稱列表$list = $User->getField('id,nickname');//兩個(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úφ€₩):
$list = $User->getField('id,nickname,email');//返回的(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)隔符:
$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ú):
$this->getField('id,name',5); // 限制(zhì)返回5條記錄$this->getField('id',3); // 獲取id數(shù)組 限制(zhì)3條記錄
可(kě)以配合使用(yòng)order方法使用(yòng)。更多(ε"duō)的(de)查詢方法可(kě)以參考查詢語↔£言章(zhāng)節。




