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

ThinkPHP6.0 模型搜索器的使用

作者头像
很酷的站长
发布2023-02-18 09:11:37
3430
发布2023-02-18 09:11:37
举报
文章被收录于专栏:站长的编程笔记

搜索器用于封装查询条件表达式,必须在模型中定义,只有使用模型操作数据时才能用搜索器。调用搜索器时使用的是数据表字段,可以不用定义搜索器方法,默认是 = 条件;如果不是数据表字段,必须定义对应的搜索器方法。

1. 调用搜索器

直接调用,默认查询条件是 =

代码语言:javascript
复制
UserModel::withSearch(['name'], ['name' => '张三'])
->fetchSql(true)
->select();
代码语言:javascript
复制
SELECT * FROM `user` WHERE  `name` = '张三'

在模型中自定义搜索器方法,改变默认的 =

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

class User extends \think\Model
{
public function searchNameAttr($query, $value, $data)
{
$query->where('name','like', $value . '%');
}
}

UserModel::withSearch(['name'], ['name' => '张三'])
->fetchSql(true)
->select();
代码语言:javascript
复制
SELECT * FROM `user` WHERE  `name` LIKE '张三%'
2. 搜索器方法的三个参数 searchNameAttr($query, $value, $data)

  • $query: think\db\Query 对象,用于链接操作
  • $value:withSearch() 第二个参数中当前搜索器字段对应的值
  • $data:withSearch() 第二个参数的值

可以直接在搜索器方法中打印参数,看看到底是个啥

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

class User extends \think\Model
{
public function searchNameAttr($query, $value, $data)
{
halt($query, $value, $data);

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 调用搜索器
  • 2. 搜索器方法的三个参数 searchNameAttr($query, $value, $data)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档