zl程序教程

您现在的位置是:首页 >  其他

当前栏目

TP6.0 模型搜索器

2023-03-07 09:44:43 时间

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

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'),
])

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

<?php
namespace app\model;

use think\Model;

class User extends Model
{
####### 搜索器 #######

public function searchUsernameAttr($query, $value, $data)
{
if ($value != '') {
$query->whereLike('username', '%' . $value . '%');
}
}
}