thinkphp6 搜索功能实现
一,thinkphp6搜索功能实现
1创建模型(例如User模型)
模型类函数的命名规范:searchFieldNameAttr,FieldName根据自己的需要随意命名。例如下面的searchNameAttr。
<?php namespace app\model; use think\Model; class User extends Model { public function searchNameAttr($query, $value, $data) { //name字段的模糊查询 $query->where('name','like', '%' . $value . '%'); } public function searchCreateTimeAttr($query, $value, $data) { //添加时间字段的限制条件 $query->whereBetweenTime('create_time', $value[0], $value[1]); } }
2控制器
User::withSearch(['name','create_time'], [ 'name' => 'think', 'create_time' => ['2018-8-1','2018-8-5'], 'status' => 1 ]) ->select();
User::withSearch(['name','create_time'], [ 'name'=>'think', 'create_time'=>['2018-8-1','2018-8-5'], 'status'=>1 ]) ->select();
注解:User::withSearch是使用thinkphp6的搜索器触发方法,['name','create_time']是上面User模型类的searchNameAttr和searchCreateTimeAttr函数,['name'=>'think','create_time' =>['2018-8-1','2018-8-5'],status'=>1]是参数。