前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TP6.0 模型搜索器

TP6.0 模型搜索器

作者头像
很酷的站长
发布2023-02-18 16:15:34
3810
发布2023-02-18 16:15:34
举报
文章被收录于专栏:站长的编程笔记

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

1. 搜索器方法命名规范

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

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

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

withSearch()

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

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

代码语言:javascript
复制
where([
    'username' => input('get.username', '', 'trim'),
    'email'    => input('get.email', '', 'trim'),
    'gender'   => input('get.gender', '', 'trim'),
])

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

代码语言:javascript
复制
<?php
namespace app\model;

use think\Model;

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

public function searchUsernameAttr($query, $value, $data)
{
if ($value != '') {
$query->whereLike('username', '%' . $value . '%');
}
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 搜索器方法命名规范
  • 2. 模型查询调用获取器(数据库查询无法使用)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档