이번에는 Laravel5에서 퍼지 매칭 및 다중 조건 쿼리 기능을 구현하는 단계에 대해 자세히 설명하겠습니다. Laravel5가 퍼지 매칭 및 다중 조건 쿼리 구현 시 주의해야 할 주의 사항은 무엇입니까? 다음은 실제 사례입니다. 살펴보겠습니다.
방법 1. ORM 모드
public function ReportAccurate($data) { if(is_array($data)) { $where = $this->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', '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. 마스터의 캡슐화 방법에 사용된 지식은 저장소 창고
$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(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; }
이 기사의 사례를 읽은 후 방법을 마스터했다고 믿습니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 주목해 주세요!
추천 도서:
ThinkPHP5 프레임워크는 페이징 쿼리를 자세히 구현합니다.
위 내용은 Laravel5에서 퍼지 매칭 및 다중 조건 쿼리 기능을 구현하는 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!