自微擎**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
- 输出花括号
- 数据调用
- 调用微站导航
- 调用幻灯片
- 调用文章列表
- 调用分类列表
- 调用快捷菜单
- 常用变量
- 附录
- 数据库字典
- 自定义分享