雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

TP6.0 模型搜索器

2024-08-24 46

搜索器用于封装字段的查询条件表达式,一个搜索器对应一个特殊的方法

1. 搜索器方法命名规范


a. 必须是 public 访问类型b. 方法名为:searchFieldNameAttr

FieldName为数据表字段名的小驼峰转换

2. 模型查询调用获取器(数据库查询无法使用)


withSearch()

第一参数为索引数组:指定调用的获取器第二参数为关联数组:搜索条件(字段对应的值)
$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.'),    ]);

默认查询条件是 =, 上面查询条件相当于以下条件

where([    'username' => input('get.username', '', 'trim'),    'email'    => input('get.email', '', 'trim'),    'gender'   => input('get.gender', '', 'trim'),])

可通过定义搜索器方法改变默认的 = 条件

<?phpnamespace app\model;use think\Model;class User extends Model{    ####### 搜索器 #######    public function searchUsernameAttr($query, $value, $data)    {        if ($value != '') {            $query->whereLike('username', '%' . $value . '%');        }    }}
更新于:2个月前
赞一波!4

文章评论

评论问答