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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。