Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Schritte zur Implementierung von Fuzzy-Matching und Abfragefunktionen mit mehreren Bedingungen in Laravel5

Detaillierte Erläuterung der Schritte zur Implementierung von Fuzzy-Matching und Abfragefunktionen mit mehreren Bedingungen in Laravel5

php中世界最好的语言
php中世界最好的语言Original
2018-05-17 14:29:511917Durchsuche

Dieses Mal werde ich Ihnen eine detaillierte Erklärung der Schritte zum Implementieren von Fuzzy-Matching und der Multi-Condition-Abfragefunktion in Laravel5 geben. Was sind die Vorsichtsmaßnahmen für Laravel5, um Fuzzy-Matching und Multi-Condition-Abfragefunktion zu implementieren? . Das Folgende ist ein praktischer Fall 1 Stehen Sie auf und werfen Sie einen Blick darauf.

Methode 1. ORM-Modus

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;
}

Die oben genannten $data sind das Array, das vom Frontend mithilfe von Kapselungsspleißen übergeben wird, um eine Fuzzy- oder Präzisionsausführung durchzuführen mehrere Bedingungen Suchelement

Das Schlimme ist, dass der Code nicht robust ist und der Wartung nicht förderlich ist

Methode 2. Die Kapselungsmethode des Masters nutzt das Wissen der Repository Warehouse

$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;
}

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte zur Implementierung der Paging-Abfrage im thinkPHP5-Framework

Detaillierte Erläuterung der Schritte um den Null-Uhr-Zeitstempel des Tages in PHP zu erhalten

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zur Implementierung von Fuzzy-Matching und Abfragefunktionen mit mehreren Bedingungen in Laravel5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn