ThinkPHP5.1.22では新しいモデルサーチャー機能が追加されました。サーチャーの機能は、フィールド (または検索識別子) のクエリ条件式をカプセル化することです (メソッドの命名規則は、searchFieldNameAttr です)。
検索者のシナリオには以下が含まれます:
フォーム内の検索条件の制限と標準化
検索者の比較:
検索者は通常、クエリを比較します。範囲内です、いいえ定義されているサーチャーの数に関係なく、クエリ範囲を結合する必要がある場合は、クエリを複数回呼び出す必要があります。
1. appmodel ディレクトリに Admin.php モデルを作成します
<?php namespace app\model; use think\Exception; use think\Model; class Admin extends Model { //查询数据(数据表格) public static function getByData($limit='10',$order='id desc',$field='*',$search=[],$searchKey=[]) { try { //查询数据 $result = self::withSearch($searchKey,$search)->order($order)->field($field)->paginate(request()->get('limit',$limit))->toArray(); }catch (\Exception $e){ throw new Exception('数据库内部错误!'); } //返回格式为json的数据 return json([ 'code' => 0, 'msg' => '数据请求成功', 'count' => $result['total'], 'data' => $result['data'] ]); } /** * @desc 查询用户名 * @param $query 查询对象 * @param $value 搜索的值 * @param $data 搜索数据(可忽略) */ public function searchUsernameAttr($query, $value, $data) { $query->where('username','like', '%' . $value . '%'); } /** * @desc 添加时间范围查询 * @param $query * @param $value */ public function searchCreateTimeAttr($query, $value) { $query->whereBetweenTime('create_time', $value[0], $value[1]); } }
<?php namespace app\controller; use app\BaseController; use app\model\Admin as AdminModel; class Admin extends BaseController { //渲染页面 public function index() { return view(); } //数据表格接口 public function data() { //存放搜索条件 $search = []; //接收前台查询传递过来的参数 $username = request()->param('username','','trim'); $create_time = request()->param('create_time','','trim'); //如果参数不为空,把数据赋值给$search if (!empty($username)){ $search['username'] = $username; } if (!empty($create_time)){ $search['create_time'] = explode('~',$create_time); } //获取$search[] 中的key $searchKey = []; if (!empty($search)){ $searchKey = array_keys($search); } return AdminModel::getByData(10,'id desc','*',$search,$searchKey); } }
3. ビューをレンダリングします
composer require topthink/think-view
4. デモを検索します
以上がThinkPHP6 検索エンジンの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。