ThinkPHP模型基礎類提供的(de)連貫操作(zuò)方法(也(∑λ∑yě)有(yǒu)些(xiē)框架稱之為(w₩→èi)鏈式操作(zuò)),可(kě)以有(yǒu)效的(de ±α☆)提高(gāo)數(shù)據存取的(de)代碼清晰度和(h₹é)開(kāi)發效率,并且支持所有(yǒu)的(♥¶πde)CURD操作(zuò)。
使用(yòng)也(yě)比較簡單, 假如(rú)我們現(xiàn<≥σΩ)在要(yào)查詢一(yī)個(gè)User表的(de)滿足狀态£<•為(wèi)1的(de)前10條記錄,并希望按→£∞照(zhào)用(yòng)戶的(de)創建時(s✘≥&∑hí)間(jiān)排序 ,代碼如(rú)下(£>↕±xià):
$User->where('status=1')->order('create_time')->limit(10)->select();
這(zhè)裡(lǐ)的(de)where、order和(hé)limit方法就(jiù)被稱之為(wèi)連貫操作(z≈uò)方法,除了(le)select方法必¥¶ε須放(fàng)到(dào)最後一(yī)個(₩ gè)外(wài)(因為(wèi)sel•γβ♥ect方法并不(bù)是(shì)連貫操作(zuò)方法)♦¶£,連貫操作(zuò)的(de)方法調用(yòng÷♣&)順序沒有(yǒu)先後,例如(rú),下(xià≤$λφ)面的(de)代碼和(hé)上(shàng) πδβ面的(de)等效:
$User->order('create_time')->limit(10)->where('status=1')->select();
如(rú)果不(bù)習(xí)慣使用(yòng)§₹¶連貫操作(zuò)的(de)話(huà),還(hái)支持直ε'接使用(yòng)參數(shù)進行(xíng)查詢的(d↑≠e)方式。例如(rú)上(shàng)面的(de)代碼可( λβ♣kě)以改寫為(wèi):
$User->select(array('order'=>'create_time','where'=>'status=1','limit'=>'10'));
使用(yòng)數(shù)組參數(shù)方式的(de)話¥'€(huà),索引的(de)名稱就(jiù)是(shì$↕∑)連貫操作(zuò)的(de)方法名稱。其實× ≤不(bù)僅僅是(shì)查詢方法可(kě)以使用(yò★¥₩ng)連貫操作(zuò),包括所有(yǒu)的(de€•)CURD方法都(dōu)可(kě)以使用(yòng),例如(rú):
$User->where('id=1')->field('id,name,email')->find();$User->where('status=1 and id=1')->delete();
連貫操作(zuò)通(tōng)常隻有(yǒu)一(yī)個(g£≈£≠è)參數(shù),并且僅在當此查詢或者操作(zuò♠ )有(yǒu)效,完成後會(huì)自(zì)動✘€清空(kōng)連貫操作(zuò)的(de)所有(yǒu)傳值(有(yα♥<×ǒu)個(gè)别特殊的(de)連貫操作(z&π♥uò)有(yǒu)多(duō)個(gè)參數(shù),并且會(huì)記錄當"α 前的(de)傳值)。簡而言之,連貫操作(zuò)的(de)結果不£☆(bù)會(huì)帶入以後的(de)查詢。
系統支持的(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ò)的(de)數(sh∑ ₩≈ù)據表名稱 | 字符串和(hé)數(shù)組 |
| alias | 用(yòng)于給當前數(shù)據表定義别名 | 字符串 |
| data | 用(yòng)于新增或者更新數(shù)據之前的(de)數(sφλ∏↑hù)據對(duì)象賦值 | 數(shù)組和(hé)對(duì)象 |
| field | 用(yòng)于定義要(yào)查詢的(de)字段(支持字←'段排除) | 字符串和(hé)數(shù)組 |
| order | 用(yòng)于對(duì)結果排序 | 字符串和(hé)數(shù)組 |
| limit | 用(yòng)于限制(zhì)查詢結果數(shù)量 | 字符串和(hé)數(shù)字 |
| page | 用(yòng)于查詢分(fēn)頁(內(nèi)部會(huì)轉換成→★limit) | 字符串和(hé)數(shù)字 |
| group | 用(yòng)于對(duì)查詢的(de)g♦∏roup支持 | 字符串 |
| having | 用(yòng)于對(duì)查詢的(de)having支持 | 字符串 |
| join* | 用(yòng)于對(duì)查詢的(de)join支持 | 字符串和(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ù)據轉換 | 字符串 |
| validate | 用(yòng)于數(shù)據自(zì)動驗證 | 數(shù)組 |
| auto | 用(yòng)于數(shù)據自(zì)動完成 | 數(shù)組 |
| filter | 用(yòng)于數(shù)據過濾 | 字符串 |
| scope* | 用(yòng)于命名範圍 | 字符串、數(shù)組 |
| bind* | 用(yòng)于數(shù)據綁定操作(zuò) | 數(shù)組或多(duō)個(gè)參數(shù) |
| token | 用(yòng)于令牌驗證 | 布爾值 |
| comment | 用(yòng)于SQL注釋 | 字符串 |
所有(yǒu)的(de)連貫操作(zuò)都(dōu)返回當前的(de)模型£γ實例對(duì)象(this),其中帶*标識的(de)表示支持多(duōσ₹)次調用(yòng)。




