ThinkPHP框架总结四

时间:2022-05-01 03:28:59
一.查询方式
where() 方法
1.使用字符串作为查询条件
例:$member->where("user_name='小白' and id=1")->select()


2.使用数组进行查询
使用数组查询缺点:
如果是范围性查询,数组方式只能赋值,不能取值范围
如果是或者(or/||)的关系,数组查询也做不到
为了解决这个问题可以使用一个关键字: _logic 来定义这个或者(or/||)这个关系
例:在数组中把这个关键字当做下面写入然后给他赋值or或的逻辑判断
$condition['_logic'] = 'OR';
这样在进行查询操作,查询语句where条件就变成或者的关系,一但使用这个方法,
where语句条件都是或者的关系
例:
        $arr['user_name']='小白';
        $arr['id']=5;
        $arr['_logic']='or';
        dump($member->where($arr)->select());


3.使用对象的方式进行查询
首先要实例化出一个类对象
stdClass内置对象 可以使用它提供的这个标准类得到一个对象,然后对这个对象进行查询
例:
        $obj=new \stdClass();
        $obj->id='5';
        $obj->user_name='小白';
        $obj->_logic='or';
        dump($member->where($obj)->select());


4.表达式查询
$map['字段名']=array('表达式','查询条件')
表达式不分大小写,支持的查询表达式有下面几种情况:
EQ 等于
NEQ 不等于
GT  大于
EGT 大于等于
LT  小于
ELT 小于等于
LIKE 模糊查询
[NOT]IN (不在)IN查询
[NOT]BETWEEN (不在)区间查询
is not null 非空查询
写这种表达式查询,必须要写这些单词,写符号不识别
例:
模糊查询 LIKE
 $map['goods_name']=array('LIKE','%小米%');
 dump($goods->where($map)->select());
如果 查询条件有多个模糊
$map['goods_name']=array('LIKE',array('%小米%','%英寸%'),'AND');
dump($goods->where($map)->select());
如果是除了他们别的都查询出来就用notlike 切记不能有空格
范围查询 between
 $map['id']=array('between',array('2','10'));
dump($goods->where($map)->select());
in范围查询
$map['id']=array('in',array('1','3'));
dump($goods->where($map)->select());
exp复合查询
$map['id']=array('exp','in(1,3,8)');
dump($goods->where($map)->select());


5.统计查询
Count()  统计数量,参数是要统计的字段名(可选)
Max()   获取最大值,参数是要统计的字段名(必须)
Min()   获取最小值,参数是要统计的字段名(必须)
Avg()   获取平均值,参数是要统计的字段名(必须)
Sum()   获取总分,参数是要统计的字段名(必须)


6.sql查询
例:dump(M()->query("select * from yh_goods"));


7.动态查询
getBy  根据字段的值查询数据
这个by后面跟的是字段名
例:
dump($goods->getByid('9'));
dump($goods->getBygoods_name('照相机'));


getFieldBy  根据字段查询并返回某个字段的值
例:
根据一个字段的值找另一个字段的值
dump($goods->getFieldBygoods_name('照相机','id'));


8.子查询
当select方法传入false参数的时候,表示不执行当前查询,而只是生成查询SQL
使用buildSql方法,表示不执行当前查询,而只是生成查询SQL
子查询的意义:利用写的子查询的语句查询出的记录(虚拟表),在子查询的条件上再进行查询
以一个查询结果做为一个表来进行查询
例:
创建子查询
$tables=$goods->where("id>20")->buildSql();
利用子查询来进行查询
dump(M()->table($tables.' as sub_table')->min('id'));


9.多表查询
alias() 给表起别名
join()  内连接查询
例:
使用join进行查询
dump($goods->alias('g')
             ->join('__CATEGORY__ as c on g.cid=c.id')
             ->field('goods_name,cate_name')
             ->select()
 );
使用where进行查询
dump(M()
       ->table(array('yh_goods'=>'g','yh_category'=>'c'))
       ->where('g.cid=c.id')
       ->field('g.id,goods_name,cate_name')
       ->select()
);