zoukankan      html  css  js  c++  java
  • ThinkPHP6.0 模型搜索器的使用

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

    1. 调用搜索器


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

    UserModel::withSearch(['name'], ['name' => '张三'])
        ->fetchSql(true)
        ->select();
    
    SELECT * FROM `user` WHERE  `name` = '张三'
    

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

    <?php
    namespace appindexmodel;
    
    class User extends 	hinkModel
    {
    	public function searchNameAttr($query, $value, $data)
        {
            $query->where('name','like', $value . '%');
        }
    }
    
    UserModel::withSearch(['name'], ['name' => '张三'])
        ->fetchSql(true)
        ->select();
    
    SELECT * FROM `user` WHERE  `name` LIKE '张三%'
    

    2. 搜索器方法的三个参数 searchNameAttr($query, $value, $data)


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

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

    <?php
    namespace appindexmodel;
    
    class User extends 	hinkModel
    {
    	public function searchNameAttr($query, $value, $data)
        {
        	halt($query, $value, $data);
    
            $query->where('name','like', $value . '%');
        }
    }
    

  • 相关阅读:
    JVM 关于对象分配在堆、栈、TLAB的理解
    分布式唯一 ID 生成方案有哪些?
    JVM 栈帧之操作数栈与局部变量表 转
    C# TreeHelper帮助类
    Java:Top K问题的解法
    C#单例模式
    C#分组方式比较
    Vue实现登录
    git使用总结
    js实现无色彩球
  • 原文地址:https://www.cnblogs.com/cfmy/p/13276272.html
Copyright © 2011-2022 走看看