withSearch可以参考官方文档,开发逻辑是controller--->business->model,首先从最底model讲起

1.model需要去创建一个模型叫goods,如果是联表查询的话就需要将多个model引用以后用sql语句筛选成一张表先执行join,其次才是搜索到的数据,后续会更新联表查询的内容

<?php
/***Created by giveLive*user:lingm*Date:2021/11/1*timer:下午 7:41*Atom:现在的努力是为了小时候吹过的NB**/namespace app\common\model\mysql;class Goods extends ModelBase
{/*** 通过withSearch触发searchTitleAttr方法* @param $query* @param $value*/public function searchTitleAttr($query,$value){//sql语句模糊查询参考如下语句//select * from tp_goods where title like "%bai";//select 字段名 from 表名 where 查询的模糊字段名 like  查询的内容$query->where('title','like','%'.$value.'%');}public function searchCreateTimeAttr($query,$value){$query->whereBetweenTime('create_time',$value[0],$value[1]);}/*** 获取分页数据* @param $data* @param int $num* @return \think\Paginator* @throws \think\db\exception\DbException*/public function getLists($likeKeys,$data,$num = 10){$order = ["id"  => "desc","listorder" => "desc"];if (!empty($likeKeys)){//data不是空的就走以下sql语句,传递内容//withsearch传递的第一个参数是field,第二个是data,字符型,之后是前缀$res = $this->withSearch($likeKeys,$data);}else {//如果data是空则走list对此重新赋值$res$res = $this;}$list = $res->whereIn("status",[0,1])->order($order)->paginate($num);echo $this->getLastSql();return $list;}
}

2.model创建好后,我们就是要在business中创建goods

<?php
/***Created by giveLive*user:lingm*Date:2021/11/1*timer:下午 6:55*Atom:现在的努力是为了小时候吹过的NB**/
namespace app\common\business;use app\common\model\mysql\Goods AS GoodsModel;
use app\common\business\GoodsSku AS GoodsSkuModel;
class Goods extends BusBase
{public $CategoryModel = null;//用__construct拦截指定赋值到模型public function __construct(){$this->CategoryModel = new GoodsModel();}/*** 创建getlists方法调用model下床的getlists* @param $data* @param int $num* @return array*/public function getLists($data,$num = 5){//定义一个模糊查询的空数组$likeKeys = [];//传递控制器层的data内容if (!empty($data)){$likeKeys = array_keys($data);//打印likekeys内容
//            halt($likeKeys);}try {$list = $this->CategoryModel->getLists($likeKeys,$data,$num);$result = $list->toArray();}catch (\Exception $e){//调用封装在Arr下的getPageintaDefultData方法$result = Arr::getPageintaDefultData($num);}return $result;}}

3.在controller中去创建index方法,将接收到的title和 time传递过去

 public function index(){$title = input("param.title","","trim");$time = input("param.time","","trim");$data = [];//如果输入的内容不是空的那就对应到输入的内容和if (!empty($title)){$data['title'] = $title;}//如果输入的时间不是空的if (!empty($time)){$data["create_time"] = explode("-",$time);}//调用获取分页的数据列表$goods = (new GoodsBis())->getLists($data,5);
//        halt($goods);return view("",["goods" => $goods,]);}
}

最后我们打印下看数据

如果我们不传递title和time则走的是正常获取的数据,也就是model中getLists方法中的

$res->whereIn("status",[0,1]) ->order($order)->paginate($num); 语句,如果传递title数据则是

而此时我们出发的就是goods模型下的 这个字段,走的逻辑就是

$query->where('title','like','%'.$value.'%');

    public function searchTitleAttr($query,$value){//sql语句模糊查询参考如下语句//select * from tp_goods where title like "%bai";//select 字段名 from 表名 where 查询的模糊字段名 like  查询的内容$query->where('title','like','%'.$value.'%');}

综上所述逻辑就是如果传递title就是会触发searchTitleAttr方法,如果传递time就会触发searchCreateTimeAttr方法,如果tiitle和time一起传递则都触发。

目前就是这样,下一篇会更新联表查询的内容。

TP6 ------withSearch使用相关推荐

  1. crm开源系统 tp框架_thinkphp6学习教程与源码 tp6开源CMS系统源码研究

    thinkphp6最新正式版框架上市已经有一段时间了,从官方的介绍来看,tp6的框架和tp5有很大的区别,完全重新改写了底层架构代码和逻辑,所以不支持thinkphp5的无缝升级,也就是说如果你之前的 ...

  2. PHP安装TP6的composer install报Undefined index: process 进程依赖于proc_open 这个函数不可用

    报错:安装tp6时候的报错 方法一 翻译:进程依赖于proc_open 这个函数,在我安装的PHP中这个函数不可用. 禁用函数去掉这个即可,在php.ini文件里面  使用/proc_open  找到 ...

  3. thinkphp开启子域名无法正常访问_解决TP6报错“当前访问路由未定义或不匹配”...

    如果是报路由错误,则说明启用了路由控制,那么所有被访问的页面都需要配置路由,否则将无法访问. 例如: 在浏览器中运行http://hml.tp6.com/admin/getlog 报错:当前访问路由未 ...

  4. thinkphp仿素材火教程_thinkphp6学习教程与源码 tp6开源CMS系统源码研究

    thinkphp6最新正式版框架上市已经有一段时间了,从官方的介绍来看,tp6的框架和tp5有很大的区别,完全重新改写了底层架构代码和逻辑,所以不支持thinkphp5的无缝升级,也就是说如果你之前的 ...

  5. Chrome调试vue项目时session异常,后端tp6 session使用异常

    Chrome调试时跨站不能设置cookie问题 this set-cookie didn't specify a "SameSite" attribute,然后变成默认Lax. 然 ...

  6. tp6 获取session_TP6文档

    请求变量 ~~~ use think\facade\Request; Request::param('name'); Request::param();全部请求变量 返回数组 Request::par ...

  7. Tp6 多应用下路由有些没有效果,这是为什么?

    原文地址:https://www.yii666.com/learning/thinkphp/38.html 问题描述 开启多应用后,在公共路由上的一些路由无法使用,或者出现错误信息:当前访问路由未定义 ...

  8. think-swoole,tp6的websocket实现

    TP6的websocket实现 基于tp6,简单实现WebSocket,这一篇就够了. 学习路线 php tp6(事件机制) swoole的websocket实现 think-swoole在tp6中实 ...

  9. tp6 防止XSS攻击之表单提交安全校验

    对后端做安全措施:转化和过滤 首先:tp6框架已经自带转化危险标签 其次:使用tp6做过滤掉危险标签 安装 composer 安装插件来处理 composer require ezyang/htmlp ...

最新文章

  1. Axure RP 第一部分
  2. 自己动手实现OpenGL之glViewPort(一)
  3. python人生的不同阶段_从入门到入土的Python自学教程,用改变你的人生轨迹
  4. js操作cookie的函数
  5. python爬虫教程大全
  6. Android之Only fullscreen opaque activities can request orientation
  7. java学习(172): 使用class实现反射编程,创建对象
  8. spring boot注解_Spring-boot(二)注解
  9. 摄影测量学——解析法相对定向
  10. python defaultdict 递归_在Python中使用defaultdict初始化字典以及应用方法
  11. 3dplanesoft 30全套注册码
  12. 从零开始学Android(一)
  13. Dagger2 学习
  14. mac安全性与隐私 不允许_隐私不仅仅是安全
  15. python打开pdf文档
  16. [Linux学习笔记] 浅谈信号(文章含不少学习资源)
  17. 给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐
  18. java编写打字游戏_程序设计:简单字母打字游戏(JAVA编写)
  19. 什么是智慧消防?数字孪生技术打造的“智慧消防”系统管控云平台了解一下
  20. 今日头条上线或将搜索广告:自媒体平台进入盈利时代

热门文章

  1. 基于自主巡航无人机和支持向量机算法的小麦叶部病害检测系统(一)
  2. js实现飞机大战小游戏
  3. cond_resched的使用
  4. 考试与评价杂志考试与评价杂志社考试与评价编辑部2021年第4期目录
  5. 原动力×云原生正发声 降本增效大讲堂
  6. Excel 2010 SQL应用039 计算员工社会保险缴纳金额
  7. vue中slot,slot-scope,v-slot的用法和区别
  8. 顺序表正负数的调整 (10分)
  9. 若川的2019年度总结,波澜不惊
  10. 简单的项目规模统计方法