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

前端之家收集整理的这篇文章主要介绍了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程序设计有所帮助。

原文链接:https://www.f2er.com/laravel/16211.html

猜你在找的Laravel相关文章