> 搜索器用于封裝字段的查詢條件表達(dá)式,一個(gè)搜索器對應(yīng)一個(gè)特殊的方法 #### 1. 搜索器方法命名規(guī)范 --- + a. 必須是 `public` 訪問類型 + b. 方法名為:search`FieldName`Attr `FieldName`為數(shù)據(jù)表字段名的小駝峰轉(zhuǎn)換 #### 2. 模型查詢調(diào)用獲取器(數(shù)據(jù)庫查詢無法使用) --- **withSearch()** + 第一參數(shù)為索引數(shù)組:指定調(diào)用的獲取器 + 第二參數(shù)為關(guān)聯(lián)數(shù)組:搜索條件(字段對應(yīng)的值) ```php $data = User::order('id asc') ->withSearch(['username', 'email', 'gender'], [ 'username' => input('get.username', '', 'trim'), 'email' => input('get.email', '', 'trim'), 'gender' => input('get.gender', '', 'trim'), ]) ->paginate([ 'list_rows' => 10, 'query' => input('get.'), ]); ``` **默認(rèn)查詢條件是 `=`, 上面查詢條件相當(dāng)于以下條件** ``` where([ 'username' => input('get.username', '', 'trim'), 'email' => input('get.email', '', 'trim'), 'gender' => input('get.gender', '', 'trim'), ]) ``` **可通過定義搜索器方法改變默認(rèn)的 `=` 條件** ```php <?php namespace app\model; use think\Model; class User extends Model { ####### 搜索器 ####### public function searchUsernameAttr($query, $value, $data) { if ($value != '') { $query->whereLike('username', '%' . $value . '%'); } } } ```