Maison >développement back-end >tutoriel php >Laravel5 implémente la fonction de correspondance floue
Cet article présente principalement la méthode d'implémentation de la fonction de correspondance floue et de requête multi-conditions dans Laravel5, et analyse la requête floue multi-conditions de Laravel5 et les compétences d'opération de packaging associées sous forme d'exemples.
Méthode 1. Mode 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; }
Les $data ci-dessus sont transmises depuis l'avant end Les tableaux utilisent l'encapsulation et l'épissage pour une recherche multi-conditions floue ou précise
L'inconvénient est que le code n'est pas robuste et n'est pas propice à la maintenance
Méthode 2. La méthode d'encapsulation du maître est utilisée Knowledge est un entrepôt de référentiel
$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; }
Recommandations associées :
Expression régulière pour obtenir un flou de caractères Exemple de fonction de correspondance
JS imitation Baidu boîte déroulante automatique invite de correspondance floue
IP de correspondance floue d'expression régulière javascript exemple de fonction d'adresse
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!