查询条件
支持的表达式查询,tp不区分大小写(字段名和内容都不区分大小写)
含义TP运算符SQL运算符例子实际查询条件等于eq=$where['id'] = array('eq','1')id = 1不等于neq!=$where['id'] = array('neq','1')id != 1大于gt(英文单词是greater than)>$where['id'] = array('gt','1')id >1大于等于egtEGT$where['id'] = array('egt','1')id>=1小于lt<$where['id'] = array('lt',1)id < 1小于等于elt<=$where['id'] = array('elt',1)id<=1匹配likelikewhere[′id′]=array(′like′,’begin%’)where id like ‘begin%’ $where[‘id’] = array('like','%begin%')where id like '%begin%'在范围内包括俩端值between0<=id<=10$where[‘id’] = array('between',array('0','10'))where id between 0 and 10不在范围内not between0 >id and 10 < id$where[‘id’] = array('not between',array('0','10'))where id not between 0 and 10在枚举的值中inin$where['id'] = array('in',array('1','2','5'))where id in ('1','2','3')不在枚举值中not innot in$where[‘id’] = array('not in',array(‘1','2','5'))where id not in ('1','2','5')字段值为nullexpis null$where['name']=array("exp","is null")where name is null复查的查询语句
有的时候,我们希望通过一次的查询就能解决问题,这个时候查询条件往往比较复杂,但是却比多次查询库来的高效。
最简单的办法是使用$where[‘_string’] = ‘xxxx’, 这个代表查询的时候拼接上 xxx 条件,一次性解决问题
$where['_string'] = 'left join A on A.id = b.id where a.id not in (select id from C)';
1,、区间查询,一个限制多种情况
默认是 and
$where['id'] =array(array('neq','8'),array('elt','200'),'and'); // 小于等于200 不等于 8
$where['id'] = array(array('neq','8'),'array('neq','10')','or'); // 不等于8或者不等于10
2、复合查询(相当于封装了新的查询条件在里面)
$where['a'] = 5;
$where['b'] = 6;
$where['_logic'] = 'or';
sql:where a = 5 or b = 6;
$condition['c'] = '3';
$condition['d'] = '4'
$condition['_logic'] = 'or'
$where['a'] = 9;
$where['_complex'] = $condition;
sql: where a=9 and (c = 3 or d = 4)
3、sql 查询
如果有设置了读写分离的话 query 是查询 execute是更新保存
M()->query('select * from a');
M()->execute('update a set counts = 3 where id = 1103')
4、 获取要执行的sql 语句
1.fetchsql
语法:$model -> where() -> limit() -> ...->order() -> fetchSql(true) ->CURD操作;
例子:M('user')->fetchsql(true)->select();
$result = $model -> group('name') -> field('name,count(*)') -> fetchSql(true) -> select();
2.buildsql
语法:$model->buildsql();
例子:M('user')->buildsql();
3.select(false)
M('user')->select(false);
4,getLastSql()
语法:M('数据表')->getLastSql();