十六、数据库的高级查询

一、高级查询

  1. | (OR) , & (AND) 来实现 where 条件的高级查询, where 支持多个连缀
Db::name('user')
	->where('name','like','%小%')
	->where([['price','>',40],['uid','>',10]])
	->select();
  1. 有多个where ,且 where 条件是分离的 $map,而 $map 本身又是多个条件,那么 $map 条件如果需要先执行结果,再和后条件判断,也就是加上括号;那么就对这个 $map 变量,再加上一个中括号,处理优先级。
$map = [
	['id','>',10]
	['price','exp',Db::raw('>80')]
];
Db::name('user')	
	->where([$map]) //[]作为整体判断
	->where('status','=',1)->select():
  1. 条件字段多次出现,且需要 OR 来左右查询,可以用 whereOr
$map1 =[ 
	['name','like','%汪'],
	['email','like','%163%']
];
$map2 =[
	['name','like','%小%']
];
Db::name('user')->whereOr([$map1,$map2])->select();
  1. 闭包查询可以连缀,会自动加上括号,更清晰,如果是OR,请用 whereOR()
Db::name('user')->where(function($query){
	$query->where('id','>',10);
})whereOr(function($query){
	$query->where('name','like','%小');
})->select();
  1. 比较复杂或不知道怎么拼接的 SQL条件,可直接使用 whereRaw() 即可
Db::name('user')
	->whereRaw('(name like "%小%" and email like "%163%") or (price > 70)')
	->select();
  1. whereRaw() 方式支持参数绑定
Db::name('user')
	->whereRaw('(name like :name and email like :email) or (price > :price)',['name'=>'%n','email'=>'%e','price'=>3)
	->select();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值