普通查询方法
field()
指定查询字段
$Dao->field(‘username,email’)->select();
where()
1.指定数据where条件,where是一个数组
$Dao->where($condition)->select();
2.指定where字串方式
$Dao->where(‘uid<10 AND email=”Jack@163.com”‘)->find();
3.where条件的区间查询
$condition[‘uid’] = array(array(‘gt’,1),array(‘lt’,5));
$list = $Dao->where($condition)->select();
SELECT * FROM user WHERE ( (uid > 1) AND (uid < 5) )
$condition['uid'] = array(array('gt',3),array('lt',10), 'or'); <br /> (uid < 1) OR (uid > 10)
$condition['username'] = array(array('like','%a%'), array('like','%b%'), 'Admin','or');<br /> (username LIKE '%a%') OR (username LIKE '%b%') OR (username = 'Admin')
Where条件使用表达式
**
TP运算符 | SQL运算符 | 例子 | 实际查询条件 |
---|---|---|---|
eq | = | $map[‘id’] = array(‘eq’,100); | 等效于:$map[‘id’] = 100; |
neq | != | $map[‘id’] = array(‘neq’,100); | id != 100 |
gt | > | $map[‘id’] = array(‘gt’,100); | id > 100 |
egt | >= | $map[‘id’] = array(‘egt’,100); | id >= 100 |
lt | < | $map[‘id’] = array(‘lt’,100); | id < 100 |
elt | <= | $map[‘id’] = array(‘elt’,100); | id <= 100 |
like | like | $map[‘username’] = array(‘like’,’Admin%’); | username like ‘Admin%’ |
between | between and | $map[‘id’] = array(‘between’,’1,8’); | id BETWEEN 1 AND 8 |
not between | not between and | $map[‘id’] = array(‘not between’,’1,8’); | id NOT BETWEEN 1 AND 8 |
in | in | $map[‘id’] = array(‘in’,’1,5,8’); | id in(1,5,8) |
not in | not in | $map[‘id’] = array(‘not in’,’1,5,8’); | id not in(1,5,8) |
and(默认) | and | $map[‘id’] = array(array(‘gt’,1),array(‘lt’,10)); | (id > 1) AND (id < 10) |
or | or | $map[‘id’] = array(array(‘gt’,3),array(‘lt’,10), ‘or’); | (id > 3) OR (id < 10) |
xor(异或) | xor | 两个输入中只有一个是true时,结果为true,否则为false,例子略。 | 1 xor 1 = 0 |
exp | 综合表达式 | $map[‘id’] = array(‘exp’,’in(1,3,8)’); | $map[‘id’] = array(‘in’,’1,3,8’); |
使用counter来更近点击量 <br /> $data['counter'] = array('exp','counter+1');<br /> // 根据条件保存修改的数据<br /> $User->save($data);<br />order()<br /> 指定数据排序 <br /> $Dao->order('uid DESC')->select();<br />limit()<br /> 数据限制 <br /> $Dao->limit('4,5')->select();
getByXname()
动态查询是一个魔术方法,可以根据某个字段名称动态得到对应的一条数据.
$Dao->getByUsername(‘Admin’);
getField()
专门用于获取某个字段的值或者多个字段的索引数组
mixed getField( string fields, mixed condition, string spea)
参数说明:
参数 | 说明 |
---|---|
fields | 必须,需要查询的字段名称,可以是一个或多个字段 |
condition | 可选,查询条件,可以是字符或数组,参考 select 方法查询条件 |
spea | 可选,多个字段数据生成关联数组时,数据间隔符号,默认为空格 |
$Dao->getField('username');<br />select()方法<br /> ThinkPHP的最常用的普通查询方法,得到的是个二维数组 <br /> $Dao->select();<br />find()<br /> 查询一条数据记录,find自动添加limit限制,返回一维数组, <br /> find使用ActiveRecords方法实现主键查询. <br /> $Dao->where($condition)->find();<br />add()<br /> 向数据库中插入数据 <br />save()<br /> save方法更新数据库,支持连贯操作 <br /> 使用where方法指定条件 <br /> $Dao->where($condition)->save($data); <br /> $Dao->where($condition)->data($data)->save();<br /> 使用主键更新数据 <br /> $data['email'] = 'Jack@163.com'; <br /> $data['uid'] = 2; <br /> $result = $Dao->save($data); <br /> 使用create()方法创建表单数据来更新数据<br /> if($vo = $Dao->create()) {<br /> $result = $Dao->save(); <br /> if($result !== false){ <br /> echo '数据更新成功!'; <br /> }else{ <br /> echo '数据更新失败!'; <br /> } <br /> } <br />setField()<br /> 支持同时更新多个字段,只需要传入数组参数即可 <br /> 1.设置单个字段 <br /> $Dao->where('uid = 2')->setField('email','Jack@163.com');<br /> 2.设置多个字段 <br /> $Dao->where('uid = 28')->setField(array('username','email'),array('Jack','Jack@163.com'));<br /> 3.设置语法 <br /> setField(fields, value, condition='')<br />setInc()<br /> ThinkPHP setInc() 方法将数字字段值增加。默认为1<br /> $Dao->setInc('score','uid=2',3);<br />setDec()<br /> ThinkPHP setDec() 方法将数字字段值减少。默认为1<br /> $Dao->setDec('score','uid=2',3);<br />delete()<br /> 来删除数据库中的数据记录,并且也支持连贯操作的使用 <br /> $Dao->where('status=0')->order('regdate ASC')->limit('5')->delete();<br />count()<br /> 统计行数 <br /> $userCount = $Dao->where('uid > 10')->count(); <br />max()<br /> 统计某个字段的最大数据 <br /> $maxScore = $Dao->max('score'); <br />min()<br /> 统计某个字段的最小数据 <br /> $minScore = $Dao->where('score>0')->min('score'); <br />avg()<br /> 统计某个字段的平均数据 <br /> $avgScore = $Dao->avg('score'); <br />sum()<br /> 统计某个字段的数据之和 <br /> SELECT SUM(score) AS tp_sum FROM user ORDER BY score DESC LIMIT 1 <br />联合查询<br /> $Dao->order('uid DESC')->limit('4,5')->select();
高级查询方法
AdvModel模型
使用动态模型切换switchModel()方法来切换AdvModel方法,
1. switchModel(“Adv”)来切换高级模式
2.建立一个Model类来集成高级模板类
class UserModel extends AdvModel{
}
getN() <br /> 去的查询结果中的某个位置的记录 <br /> $Dao->switchModel('Adv')->where('uid > 0')->order('uid ASC')->getN(2);<br /> first() <br /> 取得符合条件的第一条记录 <br /> last() <br /> 取得符合条件的最后一条记录
原生查询方法
实例化一个空模型没有对应任何数据表
query()
用于 SQL 查询操作,并返回符合查询条件的数据集
execute()
更新和写入数据的 SQL 操作,返回影响的记录数
连贯操作主方法
写入数据方法
add()
查询数据方法
select()
find()
getbyXXX()
getField()
统计方法
count()
max()
min()
avg()
sum()
定位方法
getN()
first()
last()
更新数据方法
save()
setField()
删除数据方法
delete()
其他方法
group()
having()
distinct()
join()
table()
page()
lock()