Laravel5中实现模糊匹配加多条件查询功能的方法
本文实例讲述了Laravel5中实现模糊匹配加多条件查询功能的方法。分享给大家供大家参考,具体如下:
方法1.ORM模式
publicfunctionReportAccurate($data) { if(is_array($data)) { $where=$this->whereAll($data); return$where; } else { returnfalse; } } /*多条件模糊*/ publicfunctionwhereAll($data) { $query=newReportMainpage(); $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','like','%'.$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','like','%'.$data['research_id'].'%'); $data['center_number']&&$query->where('center_number','like','%'.$data['center_number'].'%'); })->get(); return$results; }
上面的$data为前端传过来的数组利用封装拼接进行模糊或者精确的多条件搜素
不好的地方代码不健壮不利于维护
方法2.大神封装法利用到的知识是Repository仓库
$fields=['id','report_id','report_identify','report_first_received_date','drug_name','first_event_term','case_serious','standard_of_seriousness','case_causality','received_from_id','task_user_name','organize_role_name','task_countdown','report_countdown']; /*查询的字段*/ $searchFields=[ 'report_identify'=>'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(newOrderBySortCriteria('asc','task_countdown')); $data=$this->reportTaskRepo->findWhere($where,$fields); //在Trait里封装 /** *获取请求中的参数的值 *@paramarray$fields[description] *@return[type][description] */ publicfunctionsearchArray($fields=[]) { $results=[]; if(is_array($fields)){ foreach($fieldsas$field=>$operator){ if(request()->has($field)&&$value=$this->checkParam($field,'',false)){ $results[$field]=[$field,$operator,"%{$value}%"]; } } } return$results; }
更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。