TP---where多条件查询

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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值