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!