[√Nouvelle compétence] Chercheur - gestion unifiée de votre code de recherche
Le chercheur de modèles est un automatique Le Le troisième outil de gestion unifié après les fonctions getter et modificateur de modèle est principalement utilisé pour encapsuler les expressions de conditions de requête des champs (ou identifiants de recherche). Un chercheur correspond à une méthode spéciale (la méthode doit être de type public). searchFieldNameAttr (FieldName est la conversion en casse chameau du champ de la table de données). Le chercheur n'est déclenché que lorsque la méthode withSearch est appelée.
Les scénarios d'utilisation du chercheur incluent :
·Restreindre et standardiser les conditions de recherche du formulaire
·Les conditions de requête prédéfinies simplifient la requête.
Par exemple, si nous devons définir un chercheur pour le champ nom et le champ heure pour le modèle Utilisateur, nous pouvons utiliser :<?php namespace app\index\model; use think\Model; class User extends Model { public function searchNameAttr($query, $value, $data) { $query->where('name','like', $value . '%'); } public function searchCreateTimeAttr($query, $value, $data) { $query->whereBetweenTime('create_time', $value[0], $value[1]); } }
User::withSearch(['name', 'create_time'], [ 'name'=>'think', 'create_time'=>['2018-8-1','2018-8-5'], 'status'=>1 ]) ->select();
SELECT * FROM `think_user` WHERE `name` LIKE 'think%' AND `create_time` BETWEEN '2018-08-01 00:00:00' AND '2018-08-05 00:00:00'
<?php namespace app\index\model; use think\Model; class User extends Model { public function searchNameAttr($query, $value, $data) { $query->where('name','like', $value . '%'); if (isset($data['sort'])) { $query->order($data['sort']); } } public function searchCreateTimeAttr($query, $value, $data) { $query->whereBetweenTime('create_time', $value[0], $value[1]); } }
User::withSearch(['name','create_time', 'status'], [ 'name'=>'think', 'create_time'=>['2018-8-1','2018-8-5'], 'status'=>1, 'sort'=>['status'=>'desc'], ]) ->select();
SELECT * FROM `think_user` WHERE `name` LIKE 'think%' AND `create_time` BETWEEN '2018-08-01 00:00:00' AND '2018-08-05 00:00:00' ORDER BY `status` DESC
User::withSearch(['name' => 'nickname','create_time', 'status'], [ 'nickname'=>'think', 'create_time'=>['2018-8-1','2018-8-5'], 'status'=>1, 'sort'=>['status'=>'desc'], ]) ->select();
User::withSearch(['name' => function($query,$value,$data){ $query->where('name','like', $value . '%'); }, 'create_time'=>function($query,$value,$data){ $query->whereBetweenTime('create_time', $value[0], $value[1]); }], [ 'name'=>'think', 'create_time'=>['2018-8-1','2018-8-5'], 'status'=>1 ]) ->select();
tutoriels d'introduction à ThinkPHP gratuits, tout le monde est invité à apprendre !
Cet article est reproduit à partir de : https://blog.thinkphp.cn/783775Ce 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!