• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    tp5.1 框架查询表达式用法详解

    本文实例讲述了tp5.1 框架查询表达式用法。分享给大家供大家参考,具体如下:

    查询表达式

    查询表达式支持大部分的SQL查询语法,也是ThinkPHP查询语言的精髓,查询表达式的使用格式:

    where('字段名','表达式','查询条件');
    whereOr('字段名','表达式','查询条件');
    

    5.1还支持新的查询方法

    whereField('表达式','查询条件');
    whereOrField('表达式','查询条件');
    

    Field使用字段的驼峰命名方式。

    表达式不分大小写,支持的查询表达式有下面几种:

    表达式 含义 快捷查询方法
    = 等于  
    > 不等于  
    > 大于  
    >= 大于等于  
    小于  
    = 小于等于  
    [NOT] LIKE 模糊查询 whereLike/whereNotLike
    [NOT] BETWEEN (不在)区间查询 whereBetween/whereNotBetween
    [NOT] IN (不在)IN 查询 whereIn/whereNotIn
    [NOT] NULL 查询字段是否(不)是NULL whereNull/whereNotNull
    [NOT] EXISTS EXISTS查询 whereExists/whereNotExists
    [NOT] REGEXP 正则(不)匹配查询(仅支持Mysql)  
    [NOT] BETWEEM TIME 时间区间比较 whereBetweenTime
    > TIME 大于某个时间 whereTime
    TIME 小于某个时间 whereTime
    >= TIME 大于等于某个时间 whereTime
    = TIME 小于等于某个时间 whereTime
    EXP 表达式查询,支持SQL语法 whereExp

    表达式查询的用法示例如下:

    等于(=)

    例如:

    Db::name('user')->where('id','=',100)->select();
    

    和下面的查询等效

    Db::name('user')->where('id',100)->select();
    

    最终生成的SQL语句是:

    SELECT * FROM `think_user` WHERE `id` = 100
    

    不等于(>)

    例如:

    Db::name('user')->where('id','>',100)->select();
    

    最终生成的SQL语句是:

    SELECT * FROM `think_user` WHERE `id` > 100
    

    大于(>)

    例如:

    Db::name('user')->where('id','>',100)->select();
    

    最终生成的SQL语句是:

    SELECT * FROM `think_user` WHERE `id` > 100
    

    大于等于(>=)

    例如:

    Db::name('user')->where('id','>=',100)->select();
    

    最终生成的SQL语句是:

    SELECT * FROM `think_user` WHERE `id` >= 100
    

    小于()

    例如:

    Db::name('user')->where('id','',100)->select();
    

    最终生成的SQL语句是:

    SELECT * FROM `think_user` WHERE `id`  100
    

    小于等于(=)

    例如:

    Db::name('user')->where('id','=',100)->select();
    

    最终生成的SQL语句是:

    SELECT * FROM `think_user` WHERE `id` = 100
    

    [NOT] LIKE: 同sql的LIKE

    例如:

    Db::name('user')->where('name','like','thinkphp%')->select();
    

    最终生成的SQL语句是:

    SELECT * FROM `think_user` WHERE `name` LIKE 'thinkphp%'
    

    like查询支持使用数组

    Db::name('user')->where('name','like',['%think','php%'],'OR')->select();
    

    实际生成的SQL语句为:

    SELECT * FROM `think_user` 
    WHERE (`name` LIKE '%think' OR `name` LIKE 'php%')
    

    为了更加方便,应该直接使用whereLike方法

    Db::name('user')->whereLike('name','thinkphp%')->select();
    Db::name('user')->whereNotLike('name','thinkphp%')->select();
    

    [NOT] BETWEEN :同sql的[not] between

    查询条件支持字符串或者数组,例如:

    Db::name('user')->where('id','between','1,8')->select();
    

    和下面的等效:

    Db::name('user')->where('id','between',[1,8])->select();
    

    最终生成的SQL语句都是:

    SELECT * FROM `think_user` WHERE `id` BETWEEN 1 AND 8
    

    最快捷的查询方法是:

    Db::name('user')->whereBetween('id','1,8')->select();
    Db::name('user')->whereNotBetween('id','1,8')->select();
    

    [NOT] IN: 同sql的[not] in

    查询条件支持字符串或者数组,例如:

    Db::name('user')->where('id','in','1,5,8')->select();
    

    和下面的等效:

    Db::name('user')->where('id','in',[1,5,8])->select();
    

    最终的SQL语句为:

    SELECT * FROM `think_user` WHERE `id` IN (1,5,8) 
    

    最快捷的查询方法是:

    Db::name('user')->whereIn('id','1,5,8')->select();
    Db::name('user')->whereNotIn('id','1,5,8')->select();
    

     

    [NOT] IN查询支持使用闭包方式

    [NOT] NULL :

    查询字段是否(不)是Null,例如:

    Db::name('user')->where('name', null)
    ->where('email','null')
    ->where('name','not null')
    ->select();
    

    实际生成的SQL语句为:

    SELECT * FROM `think_user` 
    WHERE `name` IS NULL 
    AND `email` IS NULL 
    AND `name` IS NOT NULL
    

    如果你需要查询一个字段的值为字符串null或者not null,应该使用:

    Db::name('user')->where('title','=', 'null')
    ->where('name','=', 'not null')
    ->select();
    

    推荐的方式是使用whereNullwhereNotNull方法查询。

    Db::name('user')->whereNull('name')
    ->whereNull('email')
    ->whereNotNull('name')
    ->select();
    

    EXP:表达式

    支持更复杂的查询情况 例如:

    Db::name('user')->where('id','in','1,3,8')->select();
    

    可以改成:

    Db::name('user')->where('id','exp',' IN (1,3,8) ')->select();
    

    exp查询的条件不会被当成字符串,所以后面的查询条件可以使用任何SQL支持的语法,包括使用函数和字段名称。

    动态查询

    对于上面的查询表达式,可以使用动态查询方法进行简化,例如:

    Db::name('user')->where('id','>=',100)->select();
    

    可以简化为:

    Db::name('user')->whereId('>=',100)->select();
    

    更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

    希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • tp5.1 框架路由操作-URL生成实例分析
    • tp5.1 框架join方法用法实例分析
    • tp5.1框架数据库子查询操作实例分析
    • tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
    • tp5.1 框架数据库高级查询技巧实例总结
    • TP5框架安全机制实例分析
    • TP5框架实现自定义分页样式的方法示例
    • PHP tp5中使用原生sql查询代码实例
    上一篇:tp5.1 框架数据库高级查询技巧实例总结
    下一篇:Laravel 修改验证异常的响应格式实例代码详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    tp5.1 框架查询表达式用法详解 tp5.1,框架,查询,表达式,