搜索器用于封装字段的查询条件表达式,一个搜索器对应一个特殊的方法
public
访问类型FieldName
AttrFieldName
为数据表字段名的小驼峰转换
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'),
])
可通过定义搜索器方法改变默认的 =
条件
<?php
namespace app\model;
use think\Model;
class User extends Model
{
####### 搜索器 #######
public function searchUsernameAttr($query, $value, $data)
{
if ($value != '') {
$query->whereLike('username', '%' . $value . '%');
}
}
}