【小(xiǎo)編推薦】ThinkPHP3.2——連貫操作(zuò)

2014-06-26   | ≤↑;  發布者:梁國(guó)芳 &n≠± bsp; | &nb←✔$'sp; 查看(kàn):3320次

Thinkphp

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à):

  1. $User->where('status=1')->order('create_time')->limit(10)->select();

這(zhè)裡(lǐ)的(de)whereorder和(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)等效:

  1. $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):

  1. $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ú):

  1. $User->where('id=1')->field('id,name,email')->find();
  2. $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)。