微擎的文档看着麻烦,合在一起方便查询
目录
load,form,select,where,whereor,having,groupby,orderby,leftjoin,innerjoin,on,limit,page,get,getall,getcolumn,count,exists,getLastQueryTotal,getLastQuery
load
$query = load()->object('query');
form
from($tablename, $alias = '')
指定要查询的表名
$tablename 参数指定要查询的数据表名,此处传入的表名不要使用tablename()函数
$alias 表别名,方便以构造条件语句和关联时使用
$row = $query->from('users', 'u')->select('u.username')->get();
select
select($field1, $field2, ...)
指定要查询的字段列表,相当于 SELECT * , SELECT name, username
$field 指定要查询的字段名,可以是多个参数也可以是一个数组
$row = $query->from('users', 'u')->select('uid', 'username')->get();
$row = $query->from('users', 'u')->select(array('uid', 'username'))->get();
where
where(array | string $condition, $parameters = array())
指定查询条件,所有的查询条件将以 AND 连接
$condition 指定要查询的条件字段,也支持 范围条件操作,’>’, ‘’, ‘!=’, ‘>=’, ‘
$parameters 指定查询条件的值
$row = $query->from('users', 'u')->where('u.sex', '1')->where('uid >=', '2')->get();
$row = $query->from('users', 'u')->where(array('u.sex' => 1, 'uid >=' => 2))->get();
whereor
whereor(string | array $condition, $parameters = array())
此函数是以 OR 来连接
$row = $query->from('users', 'u')->where('sex', '1')->whereor('uid', 2)->get();
//生成SQL如下
SELECT * FROM users AS U WHERE sex = '1' OR uid = '2' LIMIT 1
having
having(string | array $condition, $parameters = array())
指定要查询的条件,与 where 参数及使用方法一样,不同的 having 在聚合函数之后执行,一般要与groupby一起使用
$row = $query->from('users', 'u')->having('count(*) >', 2)->groupby('age')->getall();
groupby
groupby($field)
指定要分组的字段
$field 要分组查询的字段名
$row = $query->from('users', 'u')->groupby('u.sex')->get();
orderby
orderby($field, $direction = 'ASC')
指定查询结果排序字段和方式
$field 要排序的字段名
$direction 排序方式,可以为 ASC 或是 DESC
$row = $query->from('users', 'u')->orderby('u.uid', 'DESC')->get();
leftjoin
leftjoin($tablename, $alias = '')
指定要左关联的表,当需要rightjoin时,请调换一下顺序书写即可
$tablename 参数指定要查询的数据表名,此处传入的表名不要使用tablename()函数
$alias 表别名,方便以构造条件语句和关联时使用
$row = $query->from('users', 'u')->leftjoin('users_profile', 'b')->on('u.id', 'b.uid')->where('u.id', '525')->get();
//如果关联条件有多个时,请使用数组形式
on(array('u.id' => 'b.uid', 'u.username' => 'b.username'))
innerjoin
innerjoin($tablename, $alias = '')
与 leftjoin 使用方法一样
on
on($condition, $parameters = array())
指定关联查询中的关联条件
与 where 函数一样,多个关联条件可以使用数组形式,一个关联查询只可出现一个on语句
limit
limit(start, size)
指定要查询从第几行起的多少行,与SQL语句中的Limit意思一样
$start 查询从第几行起
$size 查询多少行
$row = $query->from('users', 'u')->limit(1, 10)->getall();
page
page(pageindex, pagesize)
根据分页获取数据,转换成 limit 语句为 LIMIT (pageindex - 1) * pagesize, pagesize
$pageindex 当前页码
$pagesize 一页多少条数据
$row = $query->from('users', 'u')->page(1, 10)->getall();
get
get()
获取一条记录
示例
$query = load()->object('query');
$row = $query->from('users', 'u')->get();
getall
getall($keyfield = '')
获取所有记录
$keyfield 获取记录集数组指定为键值的字段,默认是自然排序
$row = $query->from('users', 'u')->limit(1, 10)->getall('uid');
getcolumn
getcolumn($field = '')
获取一条记录中指定字段的值
$field 具体获取哪个字段的值
$row = $query->from('users', 'u')->getcolumn('username');
count
count()
只获取结果集的数量有多少
示例
$query = load()->object('query');
$row = $query->from('users', 'u')->count();
exists
exists()
获取满足某个条件的数据是否存在
$is_found = $query->from('users', 'u')->where('uid', 10)->exists();
getLastQueryTotal
getLastQueryTotal()
当查询中使用了limit限制语句时,可以在完成查询后,调用此函数来获取整个表的数据量,一般用于分页使用
$pindex = max(1, intval($_GPC['page']));
$psize = 20;
$query = load()->object('query');
$row = $query->from('users', 'u')->page($pindex, $psize)->getall();
$total = $query->getLastQueryTotal();
$pager = pagination($total, $pindex, $psize); //页码HTML
getLastQuery
getLastQuery()
获取最后执行的SQL语句及参数,主要用于调试代码
$row = $query->from('users', 'u')->get();
print_r($query->getLastQuery());
领取专属 10元无门槛券
私享最新 技术干货