TP---where多条件查询

版权声明:实战经验 https://blog.csdn.net/qq_42455095/article/details/84569620

TP的多条件查询功能是非常强大的。
先上句代码热热身:

Db::name('stu')->where(['name'=>'张三','sex'=>'男'])->select();

这就是一个简单的多条件查询
当然大家都知道,这种只是最简单的“=”的形式,要是查询类似于id大于3、姓张的人、年龄在18到30岁之间、位置在山东浙江北京其中一个……该怎么办?
下面就为大家解答,为了节约时间我把所有例子放到一个代码中。

Db::name('stu')->
where([
	'id'=>['>','3'],
	'name'=>['like','张%'],
	'age'=>['between',['18','30']],
	'position'=>['in',['山东','浙江','北京']]
])->select();

着急用的朋友上面的代码就应该足够了,下面我们详细介绍下具体where用法和其他技巧。
首先我个人并不喜欢直接在where条件中写一大串,一般都是先存在变量中,最后放进语句中执行。

$where['id']=['>','3'];
$where['name']=['like','张%'];
$where['age']=['between',['18','30']];
//上面这句还可以这么写
//$where['age']=['between','18,30'];
$where['position']=['in',['山东','浙江','北京']];
//同样in也可以换个写法
//$where['position']=['in','山东,浙江,北京'];
Db::name('stu')->where($where)->select();

这种写法有一定的好处,首先就是代码清晰明了,其次就是方便查找错误;
而且还可以根据是否需要来增加条件(类似于搜索效果):
图片

$where[1]=[1];
if($sex){
	//根据有无sex来添加条件,当有sex传来时,查询固定sex,没有时查询所有信息
	$where['sex']=['=',$sex];
}

这时候可能就有人问了,我想用not查询怎么办,非常简单:

$where['name']=['not like','张%'];

以上这些都是以and连接的查询条件,那么如果想用or该怎么办呢?
举个例子相信大家就都明白了:

$where['id'] = [['<',3],['>',10],'or'];

放个大招!
当你实在不知道where条件怎么写,走投无路时,还有更直接方法,直接在where中写sql条件,例如:

Db::name('stu')->where("sex='男' and age='女' or age<18")->select();
//当然,and也可以换成or

猜你喜欢

转载自blog.csdn.net/qq_42455095/article/details/84569620