Laravel5中实现模糊匹配加多条件查询功能的方法

本文实例讲述了Laravel5中实现模糊匹配加多条件查询功能方法分享给大家供大家参考,具体如下:

方法1. ORM模式

whereAll($data); return $where; } else { return false; } } /*多条件模糊*/ public function whereAll($data) { $query = new ReportMainpage(); $results = $query->where(function ($query) use ($data) { $data['report_first_received_date'] && $query->where('report_first_received_date','like','%' . $data['report_first_received_date'] . '%'); $data['report_drug_safety_date'] && $query->where('report_drug_safety_date','%' . $data['report_drug_safety_date'] . '%'); $data['aecountry_id'] && $query->where('aecountry_id',$data['aecountry_id']); $data['received_fromid_id'] && $query->where('received_fromid_id',$data['received_fromid_id']); $data['research_id'] && $query->where('research_id','%' . $data['research_id'] . '%'); $data['center_number'] && $query->where('center_number','%' . $data['center_number'] . '%'); })->get(); return $results; }

上面的$data为前端传过来的数组 利用封装拼接进行模糊或者精确的多条件搜素

不好的地方 代码不健壮 不利于维护

方法2. 大神封装法 利用到的知识是Repository 仓库

'like','drug_name' => 'like','event_term' => 'like','organize_role_id' => '=','case_causality' => '=','report_type' => '=','task_user_id' => '=','status' => '=',]; /*获取查询条件*/ $where = $this->searchArray($searchFields); /*获取数据*/ $this->reportTaskRepo->pushCriteria(new OrderBySortCriteria('asc','task_countdown')); $data = $this->reportTaskRepo->findWhere($where,$fields); //在Trait里封装 /** * 获取请求中的参数的值 * @param array $fields [description] * @return [type] [description] */ public function searchArray($fields=[]) { $results = []; if (is_array($fields)) { foreach($fields as $field => $operator) { if(request()->has($field) && $value = $this->checkParam($field,'',false)) { $results[$field] = [$field,$operator,"%{$value}%"]; } } } return $results; }

更多关于Laravel相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《PHP常见数据库操作技巧汇总》

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

相关文章

laravel的dd函数不生效怎么办
看不懂laravel文档咋办
安装laravel框架出现command怎么办
Laravel开发API怎么使用事务
laravel怎么构建复杂查询条件
laravel如何实现防止被下载