>  기사  >  백엔드 개발  >  Laravel5에서 퍼지 매칭 및 다중 조건 쿼리 기능을 구현하는 방법

Laravel5에서 퍼지 매칭 및 다중 조건 쿼리 기능을 구현하는 방법

不言
不言원래의
2018-06-06 11:01:502113검색

이 글은 주로 Laravel5에서 퍼지 매칭 및 다중 조건 쿼리 기능을 구현하는 방법을 소개하고, 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;
}


위 내용은 Laravel5에서 퍼지 매칭 및 다중 조건 쿼리 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.