鏈式操作
數據庫提供的鏈式操作方法,可以有效的提高數據存取的代碼清晰度和開發效率,並且支持所有的CURD操作。
使用也比較簡單,假如我們現在要查詢一個User表的滿足狀態為1的前10條記錄,並希望按照用戶的創建時間排序 ,代碼如下:
Db::table('think_user') ->where('status',1) ->order('create_time') ->limit(10) ->select();
這里的where
、order
和limit
方法就被稱之為鏈式操作方法,除了select方法必須放到最后一個外(因為select方法並不是鏈式操作方法),鏈式操作的方法調用順序沒有先后,例如,下面的代碼和上面的等效:
Db::table('think_user') ->order('create_time') ->limit(10) ->where('status',1) ->select();
其實不僅僅是查詢方法可以使用連貫操作,包括所有的CURD方法都可以使用,例如:
Db::table('think_user') ->where('id',1) ->field('id,name,email') ->find(); Db::table('think_user') ->where('status',1) ->where('id',1) ->delete();
鏈式操作在完成查詢后會自動清空鏈式操作的所有傳值。簡而言之,鏈式操作的結果不會帶入后面的其它查詢。
系統支持的鏈式操作方法有:
連貫操作 | 作用 | 支持的參數類型 |
---|---|---|
用於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),其中帶*標識的表示支持多次調用。