## 条件查询方法
### `where`方法
~~~
db()->table('industry')->where('slug=? ',[$data['slug']])->one();
~~~
在我们的查询过程中,有时候会遇到`in`查询,使用方法如下:
~~~
$in=[1,2,3,4];
$e=[3,4,5];
if($in){
$all=db()->table('stores_users_info')->where('stores_id=? and stores_role_id in ('.DB::in($e).')',$in)->all();
}else{
$all=array();
}
~~~
>[info]注意$e和$in不能为空,否则会报错。
在我们进行搜索操作的时候往往会有更多中查询的结构出现,下面我将介绍一下在后台页面分页搜索的时候如何编写条件进行查询操作:
一个简单的门店管理列表页:
~~~
//门店管理
static function pager_stores(){
$where = ['page'=>$_GET['size']?:10,'url'=>'dianxiaoer/stores/index'];
$q = $_GET['user'];
if($_GET['uid']){
$where['uid']=$_GET['uid'];
}
if($q){
$where['and_where'][] = ['(id=? or name=?)'=>[$q,$q]];
}
$where['is_delete']=0;
$data = model('stores')->pager($where);
foreach($data->data as $k=>$v){
$data->data[$k]->industry_lable=obj('app\block\common')->users_industry_lable($v->uid)->name;
$data->data[$k]->max_users=obj('app\block\common')->users_detail($v->uid)->max_users;
$data->data[$k]->fromto=obj('app\block\common')->fromto($v->uid);
}
return $data;
}
~~~
>[info]该条件为多个条件的查询,此条件为or查询。
那么下面介绍如何用and条件查询,以上面的查询为主:
~~~
$where['and_where'] = [
[ 'created >= ?' => [$start]],
[ 'created <= ?' => [$end]]
];
~~~
>[info]此条件为并且的关系,亦可理解为and查询,如何只存在一个条件的情况下,可设置为$where['and_where'][]=['stores_id=?'=>$stores_users->stores_id];
还有一种情况为`in`条件查询,同样以上面范例为主:
~~~
$where['and_where'][]=['stores_id in ('.DB::in($f).')'=>$f];
~~~
>[info]$f在此不能为空,为空的情况下需特别定义为$con['stores_id']='';