When we do multi-condition search, we can use the traditional array method. Today I will introduce another one to you, which is the ThinkPHP6 searcher.
1. Understand the definition of searcher
Let’s first take a look at the description of searcher in the manual.
The function of the searcher is to encapsulate the query condition expression of the field (or search identifier). A searcher corresponds to a special method (the method must be of public type). The method naming convention is :
search FieldName Attr
FieldName is the camel case conversion of the data table field. The searcher is only triggered when the withSearch method is called.
2. Establish search conditions
How to use the searcher? Let's explain with examples.
We have three search conditions: goods_cate_id (category filtering), goods_status (status filtering), goods_name (keyword filtering).
We first establish three search methods:
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.'%'); }
Pay special attention to the naming of search methods, we must strictly follow the definitions in the official manual. For example, if the search field of our data table is goods_cate_id, then when defining the method, the following is wrong:
1. Public function searchGoodsCateId($query, $value), less Attr.
2. Public function searchGoodsCateIDAttr($query, $value), the camel case is written incorrectly.
3. Public function searchGoodsCateAttr($query, $value), the Id is written in camel case incorrectly.
4. Private function searchGoodsCateIdAttr($query, $value) must be public.
3. Trigger search
Searcher is only triggered when the withSearch method is called.
$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);
In addition, in addition to searching, the searcher can also perform sorting functions, so I won’t give an example here.
During debugging, we can also print the sql statement. If there is no result we want, we can directly analyze the sql statement.
echo Goods::getLastSql();
The above is an explanation of the use of the ThinkPHP6 search engine. When doing multi-condition searches, you can use whichever one you like, or you can choose according to your own situation.
The above is the detailed content of Use of ThinkPHP6 search engine. For more information, please follow other related articles on the PHP Chinese website!