Lorsque nous effectuons une recherche multi-conditions, nous pouvons utiliser la méthode traditionnelle des tableaux. Aujourd'hui, je vais vous en présenter une autre, qui est le chercheur ThinkPHP6.
1. Comprendre la définition du chercheur
Examinons d'abord la description du chercheur dans le manuel.
La fonction du chercheur est d'encapsuler l'expression de la condition de requête du champ (ou l'identifiant de recherche). Un chercheur correspond à une méthode particulière (la méthode doit être de type public). la convention est la suivante :
search FieldName Attr
FieldName est la conversion en cas de chameau du champ de la table de données, et le chercheur n'est déclenché que lorsque la méthode withSearch est appelée.
2. Établir les conditions de recherche
Comment utiliser le chercheur ? Expliquons avec des exemples.
Nous avons trois conditions de recherche : goods_cate_id (filtrage par catégorie), Goods_status (filtrage par statut), Goods_name (filtrage par mots clés).
Nous créons d'abord trois méthodes de recherche :
public function searchGoodsCateIdAttr($query, $value) { $query->where('goods_cate_id','in', $value); } public function searchGoodsStatusAttr($query, $value) { $query->where('goods_status','=', $value); } public function searchGoodsNameAttr($query, $value) { $query->where('goods_name','like', '%'.$value.'%'); }
Portez une attention particulière à la dénomination des méthodes de recherche, nous devons suivre strictement les définitions du manuel officiel. Par exemple, si le champ de recherche de notre table de données est Goods_cate_id, alors lors de la définition de la méthode , ce qui suit est faux :
1 public function searchGoodsCateId($query, $value), less. Attr.
2. Fonction publique searchGoodsCateIDAttr($query, $value), le cas chameau est faux.
3. Fonction publique searchGoodsCateAttr($query, $value), l'identifiant est mal écrit en casse chameau.
4. La fonction privée searchGoodsCateIdAttr($query, $value) doit être publique.
3. Déclencher la recherche
Searcher Seul est déclenché lorsque la méthode withSearch est appelée.
$goodsData=Goods::name('goods')->withSearch(['goods_cate_id','goods_status','goods_name'],[ 'goods_cate_id'=>$cateChilerenId, 'goods_status'=>$goods_status, 'goods_name'=>$goods_name ])->paginate(10);
De plus, en plus de la recherche, le chercheur peut également effectuer des fonctions de tri, je ne donnerai donc pas d'exemple ici.
Pendant le débogage, nous pouvons également imprimer l'instruction sql. Si nous ne voulons aucun résultat, nous pouvons analyser directement l'instruction sql.
echo Goods::getLastSql();
Ce qui précède est l'explication sur l'utilisation du moteur de recherche ThinkPHP6. Lorsque vous effectuez une recherche multi-conditions, vous pouvez utiliser celui de votre choix, ou vous pouvez choisir en fonction de votre propre situation.
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!