鏈式操作
數據庫提(ti)供的(de)(de)鏈式操(cao)作方法,可以有效的(de)(de)提(ti)高(gao)數據存取的(de)(de)代(dai)碼(ma)清晰(xi)度和開發效率,并(bing)且支持所有的(de)(de)CURD操(cao)作。
使用也(ye)比較(jiao)簡單,假如(ru)我們現(xian)在要查詢一(yi)個User表的(de)滿足(zu)狀態為1的(de)前10條(tiao)記(ji)錄,并希(xi)望按照用戶的(de)創建時間排序 ,代碼如(ru)下:
Db::table('think_user')
->where('status',1)
->order('create_time')
->limit(10)
->select();
這里的where、order和limit方(fang)法(fa)就被稱之為(wei)(wei)鏈(lian)式操(cao)作(zuo)方(fang)法(fa),除(chu)了select方(fang)法(fa)必須放到最后(hou)一個外(wai)(因(yin)為(wei)(wei)select方(fang)法(fa)并不是鏈(lian)式操(cao)作(zuo)方(fang)法(fa)),鏈(lian)式操(cao)作(zuo)的方(fang)法(fa)調用順序(xu)沒有先后(hou),例如(ru),下面(mian)(mian)的代(dai)碼和上面(mian)(mian)的等效:
Db::table('think_user')
->order('create_time')
->limit(10)
->where('status',1)
->select();
其實不僅(jin)僅(jin)是查詢方(fang)法可(ke)以使用連(lian)貫(guan)操(cao)作(zuo),包括所有的CURD方(fang)法都(dou)可(ke)以使用,例如:
Db::table('think_user')
->where('id',1)
->field('id,name,email')
->find();
Db::table('think_user')
->where('status',1)
->where('id',1)
->delete();
鏈(lian)式操(cao)作(zuo)在完成查(cha)詢后會自動清空鏈(lian)式操(cao)作(zuo)的(de)所(suo)有傳值(zhi)。簡而言之,鏈(lian)式操(cao)作(zuo)的(de)結果不(bu)會帶入后面的(de)其它查(cha)詢。
系統支持(chi)的(de)鏈式操作(zuo)方(fang)法有:
| 連貫操作 | 作用 | 支持的參數類型 |
|---|---|---|
| where* | 用于AND查詢 | 字符串、數組和對象 |
| whereOr* | 用于OR查詢 | 字符串、數組和對象 |
| wheretime* | 用于時間日期的快捷查詢 | 字符串 |
| table | 用于定義要操作的數據表名稱 | 字符串和數組 |
| alias | 用于給當前數據表定義別名 | 字符串 |
| field* | 用于定義要查詢的字段(支持字段排除) | 字符串和數組 |
| order* | 用于對結果排序 | 字符串和數組 |
| limit | 用于限制查詢結果數量 | 字符串和數字 |
| page | 用于查詢分頁(內部會轉換成limit) | 字符串和數字 |
| group | 用于對查詢的group支持 | 字符串 |
| having | 用于對查詢的having支持 | 字符串 |
| join* | 用于對查詢的join支持 | 字符串和數組 |
| union* | 用于對查詢的union支持 | 字符串、數組和對象 |
| view* | 用于視圖查詢 | 字符串、數組 |
| distinct | 用于查詢的distinct支持 | 布爾值 |
| lock | 用于數據庫的鎖機制 | 布爾值 |
| cache | 用于查詢緩存 | 支持多個參數 |
| relation* | 用于關聯查詢 | 字符串 |
| with* | 用于關聯預載入 | 字符串、數組 |
| bind* | 用于數據綁定操作 | 數組或多個參數 |
| comment | 用于SQL注釋 | 字符串 |
| force | 用于數據集的強制索引 | 字符串 |
| master | 用于設置主服務器讀取數據 | 布爾值 |
| strict | 用于設置是否嚴格檢測字段名是否存在 | 布爾值 |
| sequence | 用于設置Pgsql的自增序列名 | 字符串 |
| failException | 用于設置沒有查詢到數據是否拋出異常 | 布爾值 |
| partition | 用于設置分表信息 | 數組 字符串 |
所有的連貫操作都返回當前的模型實例對象(this),其中帶*標(biao)識(shi)的表示支持多次調用。
