自微擎**v1.5.7**版本以后,增加鏈式查詢類,提供面向對象方式查詢數據,鏈式查詢只支持一些常用簡單的查詢過于復雜的業務需求還是建議直接使用SQL語句。
查詢用戶表中的前十條男性的用戶數據,代碼如下:
~~~
$query = load()->object('query');
$row = $query->from('users')->where('sex', '1')->orderby('id', 'desc')->limit(10)->getall();
~~~
上方代碼中,from, where, orderby, limit 就是被稱之為鏈示調用,除了一開始必須要先指定**from()**哪個表和最后需要獲取數據時調用**get()**,**getall()**時,其它函數書寫并不區分先后順序。
但是這里并不推薦直接實例化**Query**對象進行數據查詢,對于程序員來說以下的代碼和上面在“語義”上并沒有什么太大的區別,鏈示查詢只是簡化和方便了SQL語句的書寫。我們看代碼都能知道他是在查詢什么數據,但是并不知道這樣做的意義和作用是什么。
~~~
pdo_fetchall("SELECT * FROM `users` WHERE sex = '1' ORDER BY id DESC LIMIT 10");
~~~
所以我們更推薦將**Query**類結合**Table**類來一起使用,比如以上的查詢可以改造為。
~~~
class UsersTable extends We7Table { public function searchNewUserList() { return $this->query->from('users')->getall(); } public function searchWithSexIsBoy() { $this->where('sex', '1'); return $this; } public function searchCount($limit) { $this->limit($limit); return $this; }}$usertable = new UsersTable();$usertable->searchWithSexIsBoy();$usertable->searchCount(10);$list = $usertable->searchNewUserlist();
~~~
以上的代碼,很明顯的能明白查詢者的意圖,而且很靈活的進行修改,比如業務改變了要查詢最新的20名同學,只需要
~~~
$usertable->searchCount(20);
~~~
即可。
在微擎中,所有的**Query**對象皆是以**Table**對象的形式存在,存放于 Framework/table 目錄中,通過以下方式調用:
~~~
$users_table = table('users');
$users_table->searchWithFounder(ACCOUNT_MANAGE_GROUP_VICE_FOUNDER);
$users_table->searchWithPage($pindex, $psize);$users = $users_table->searchUsersList();
~~~
- 微擎框架
- 目錄結構
- 配置選項
- 數據庫配置($config[db])
- 系統COOKIE配置項($config[cookie])
- 系統設置($config[setting])
- 預定義常量
- 全局變量
- 全局配置
- 系統配置
- 公眾號相關
- Web 端可見
- App 端可見
- 網頁授權
- URL 路由
- url生成助手
- createMobileUrl
- createWebUrl
- 文件加載器
- func(加載公共函數)
- class(加載公共類)
- model(加載系統model函數)
- web(加載web端公共函數)
- app(加載app端公共函數)
- library(庫文件加載)
- object(實例化加載)
- singleton(單例加載)
- 緩存機制
- cache_write
- cache_load
- cache_delete
- cache_clean
- cache_system_key
- 數據庫
- SQL注入安全
- 連接其它數據庫
- 函數列表
- pdo_get
- pdo_getcolumn
- pdo_getall
- pdo_getslice
- pdo_fetch
- pdo_fetchcolumn
- pdo_fetchall
- pdo_insert
- pdo_update
- pdo_delete
- pdo_query
- pdo_run
- pdo_fieldexists
- pdo_indexexists
- pdo_tableexists
- pdo_fieldmatch
- pdo_debug
- 鏈式查詢
- from
- select
- where
- whereor
- having
- groupby
- orderby
- leftjoin
- innerjoin
- on
- limit
- page
- get
- getall
- getcolumn
- count
- exists
- getLastQueryTotal
- getLastQuery
- 錯誤處理
- 日志記錄
- 模板引擎
- 模板標簽
- 輸出變量
- 判斷語句
- 循環語句
- php語句
- 引用模板
- 創建URL
- 轉義附件URL
- 輸出花括號
- 數據調用
- 調用微站導航
- 調用幻燈片
- 調用文章列表
- 調用分類列表
- 調用快捷菜單
- 常用變量
- 附錄
- 數據庫字典
- 自定義分享