Laravel 下数据库模糊查询问题。
数据库查询问题。
现在项目有搜索的功能。
user表。
条件有四个,不要求必须全部四个关键字都有。
随便一个关键字也可以查询。
name。模糊搜索
code,number,ext。精确搜索。
以下方法是错误的,会把符合条件的所有都查询出来。
用的查询构造器查询的。
//连接数据库方法
public function getDB()
{
return \DB::connection('user');
}
public function getData()
{
//连接数据库
$getDB = DBService::getDB ($keywords);
$data = $getDB->table('user')
->where('name','like','%'.$keywords['name'].'%')
->orWhere('code',$keywords['code'])
->orWhere('number',$keywords['number'])
->orWhere('ext',$keywords['ext'])
->get();
dd($data);
}
后来在网上查了一下,建议用每个关键字是否存在,然后基于上一个关键字得出的结果在进行找。
写了一下,感觉还是不对。。
不知道有没有优雅一点能解决问题的方法啊。
if (!empty($keywords['name'])) {
$getDB->table('user')->where('name','like','%'.$keywords['name'].'%');
}
if (!empty($keywords['reg_number'])) {
$getDB->table('user')->where('code',$keywords['code']);
}
if (!empty($keywords['reg_code'])) {
$getDB->table('user')->where('number',$keywords['number']);
}
if (!empty($keywords['omit_flag'])) {
$getDB->table('user')->where('ext',$keywords['ext']);
}
$data = $getDB->get();
推荐文章: