• tp5 传参闭包查询+tp5中的where与whereor怎么同时使用


    本案例实现了,单字段多搜索词模糊匹配查询和多字段同个搜索词模糊匹配查询,或的关系 

     

    在thinkPHP模型查询中,一般有两种方式:数组方式和闭包方式,相对于数组方式只能定义查询条件,闭包方式可以支持更多的连贯操作,包括排序,数量限制等。

    在thinkPHP闭包查询中通常使用use进行参数传递

    普通闭包查询:

    $items=ItemModel::all(function($query){$query->order('sort','asc');});

    带参数的闭包查询:

    $items=ItemModel::all(function($query)use($type){

      $query->where('type',$type)->order('sort','asc');

    })

    tp5中的where与whereor同时使用一:

     

    $data = db('table')->where(function($query) {

        $query->where('key1', value)->whereor('key1',value1);

    })->where(['key2'=>value2,'key3'=>value3])->field('key4')->find();

    生成的sql语句为:

     
    find key4 FROM `table` WHERE  (  `key1` = 'value' OR `key1` = 'value1' ) and  `key2` = 'value2'

     and 'key3' = 'value3';

    二:


    $data = db('table')->where(function($query) {

        $query->where('key1', value)->whereor('key1',value1);

    })->whereor(function($query){

        $query->where(['key2'=>value2]->whereor(['key3'=>value3]))

    })->field('key4')->find();

    find 'key4' FROM `table` WHERE  (  `key1` = value OR `key1` = value1 )

    OR (  `key2` = 'value2' OR `key3` = 'value3' )

    实际场景

    tp5 使用数组查询时,一个字段有多个搜索词时的写法

    场景一  一个字段多个搜索错
    $option['question']=[
    ['like','%'.'乐刷'.'%'],
    ['like','%'.'666'.'%'],
    'or'
    ];  //测试可行, 

    分词查询(多条件模糊查询)在讯宝实现了

    场景二-----多个字段同时匹配查询或语法
     whereor闭包查询,云笔记项目搜索接口有案例
    $list1=Db::name('user_biji')->page($page,10)->where(
    function ($query)use($keyword){
    $query->whereor('title','like',"%$keyword%")
    ->whereor('memo','like',"%$keyword%");
    })->where('user_id',$this->auth->id)->field('id,title,memo,createtime,type,images')->select(); //测试可行
    //要使用多个whereor查询的话必须使用闭包查询的方式,否则会导致where条件失效

  • 相关阅读:
    docker mysql
    dotnet core webapi +vue 搭建前后端完全分离web架构
    npm run dev
    docker pureftpd
    虚拟主机连接FTP发送"AUTH TLS"命令后提示“无法连接到服务器”
    [mobile开发碎碎念]手机页面上显示PDF文件
    T-SQL注意事项(1)——SET NOCOUNT ON的去与留
    Tomcat 部署多个项目出现错误
    十进制小数和二进制小数之间的转换
    sed 替换多个空格为一个
  • 原文地址:https://www.cnblogs.com/xiaogou/p/15994396.html
Copyright © 2020-2023  润新知