上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式支持更多的SQL查询语法,也是ThinkPHP查询语言的精髓,查询表达式的使用格式:

$map['字段名'] = array('表达式','查询条件');

大理石平台规格

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

表达式 含义 协助记忆
EQ 等于(=) equal
NEQ 不等于(<>) not equal
GT 大于(>) greater
EGT 大于等于(>=) equal or greater
LT 小于(<) less than
ELT 小于等于(<=) equal or less than
LIKE 模糊查询  
[NOT] BETWEEN (不在)区间查询  
[NOT] IN (不在)IN 查询  
EXP 表达式查询,支持SQL语法 expression

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

EQ :等于(=)

例如:

  1. $map['id'] = array('eq',100);

和下面的查询等效

  1. $map['id'] = 100;

表示的查询条件就是 id = 100

NEQ: 不等于(<>)

例如:

  1. $map['id'] = array('neq',100);

表示的查询条件就是 id <> 100

GT:大于(>)

例如:

  1. $map['id'] = array('gt',100);

表示的查询条件就是 id > 100

EGT:大于等于(>=)

例如:

  1. $map['id'] = array('egt',100);

表示的查询条件就是 id >= 100

LT:小于(<)

例如:

  1. $map['id'] = array('lt',100);

表示的查询条件就是 id < 100

ELT: 小于等于(<=)

例如:

  1. $map['id'] = array('elt',100);

表示的查询条件就是 id <= 100

[NOT] LIKE: 同sql的LIKE

例如:

  1. $map['name'] = array('like','thinkphp%');

查询条件就变成 name like 'thinkphp%' 如果配置了DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询。例如设置了:

  1. 'DB_LIKE_FIELDS'=>'title|content'

的话,使用

  1. $map['title'] = 'thinkphp';

查询条件就会变成 title like '%thinkphp%' 支持数组方式,例如

  1. $map['a'] =array('like',array('%thinkphp%','%tp'),'OR');
  2. $map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND');

生成的查询条件就是:

  1. (a like '%thinkphp%' OR a like '%tp') AND (b not like '%thinkphp%' AND b not like '%tp')

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

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

  1. $map['id'] = array('between','1,8');

和下面的等效:

  1. $map['id'] = array('between',array('1','8'));

查询条件就变成 id BETWEEN 1 AND 8

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

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

  1. $map['id'] = array('not in','1,5,8');

和下面的等效:

  1. $map['id'] = array('not in',array('1','5','8'));

查询条件就变成 id NOT IN (1,5, 8)

EXP:表达式

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

  1. $map['id'] = array('in','1,3,8');

可以改成:

  1. $map['id'] = array('exp',' IN (1,3,8) ');

exp查询的条件不会被当成字符串,所以后面的查询条件可以使用任何SQL支持的语法,包括使用函数和字段名称。查询表达式不仅可用于查询条件,也可以用于数据更新,例如:

  1. $User = M("User"); // 实例化User对象
  2. // 要修改的数据对象属性赋值
  3. $data['name'] = 'ThinkPHP';
  4. $data['score'] = array('exp','score+1');// 用户的积分加1
  5. $User->where('id=5')->save($data); // 根据条件保存修改的数据
 

thinkphp 表达式查询的更多相关文章

  1. Thinkphp查询 1.查询方式 2.表达式查询 3.快捷查询 4.区间查询 5.组合查询 6.统计查询 7.动态查询 8.SQL 查询

    1.使用字符串作为条件查询 $user = M('User'); var_dump($user->where('id=1 AND user="蜡笔小新"')->sele ...

  2. Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?

    Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?先上两种实现方式的实例:$querys["house_type_image"] ...

  3. thinkphp的普通查询与表达式查询

    一.普通查询方式 a.字符串:$arr=$m->where("sex=0 and username='gege'")->find();//字符串需要加引号 b.数组 $ ...

  4. CRL快速开发框架系列教程二(基于Lambda表达式查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  5. thinkphp 定位查询 Model:last您所请求的方法不存在!

    thinkphp 定位查询 Model:last您所请求的方法不存在!   用thinkphp3.1做项目的时候为了获取记录表中最后一个id用到了last()方法,出现了这个错误:Model:last ...

  6. ThinkPHP视图查询详解

    ThinkPHP视图查询详解 参考http://www.jb51.net/article/51674.htm   这篇文章主要介绍了ThinkPHP视图查询,需要的朋友可以参考下     ThinkP ...

  7. lambda表达式查询经验:IN 和groupby的使用

    lambda In的用法: lambda表达式查询没有IN这个方法,可以变通一下,in查询的数组是否包含在映射对象里面的集合里: 如下代码: var departmentIDs = input.Dep ...

  8. thinkphp 如何查询数据库

    在控制器中使用M(); 数据表: 一.查询方式 1.字符串作为条件 2.使用索引数组作为条件查询条件 //可以更改逻辑关系 $condition['_logic'] = 'OR'; 二.表达式查询 三 ...

  9. ThinkPHP视图查询

    ThinkPHP视图查询 一.总结 1.这里的视图查询和多表查询很像,当然多表查询的话肯定要支持左右链接查询 2.view:视图的使用,关键字是view 3.sql视图功能支持:thinkphp支持视 ...

随机推荐

  1. HDFS API 操作实例(二) 目录操作

    1. 递归读取文件名 1.1 递归实现读取文件名(scala + listFiles) /** * 实现:listFiles方法 * 迭代列出文件夹下的文件,只能列出文件 * 通过fs的listFil ...

  2. Spring Boot 启动,1 秒搞定!

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 原文: dev.to 翻译: ImportNew.com - 唐尤华译文: http://www.importnew.com ...

  3. java笔试之从单向链表中删除指定值的节点

    输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针. 链表的值不能重复 构造过程,例如 1 -> 2 3 -> 2 5 -> 1 4  ...

  4. iOS开发系列-Shell脚本编译SDK

    Library静态库Shell脚本 #!/bin/bash #要build的target名 target_Name="IFlyMSC" #编译模式 Release.Debug bu ...

  5. Hive应用实例:WordCount

  6. 7_API调用

    0 查看 kifastcallentry 里面具体怎么调用 首先是 切换了 fs 为kpcr的选择子 然后 构造了 一个trap frame(保存3环-->0环 切换的上下文:如果0环不使用就没 ...

  7. The linux command 之引用

    [me@linuxbox ~]$ echo this is a test this is a test shell 会对echo进行单词分割(word splitting)去除多余的空白. [me@l ...

  8. layer.confirm等事件X关闭与取消监听

    关于layer.confirm的所有操作 layer.confirm('content',{ btn:['确定','取消'], cancel:function(index, layero){ cons ...

  9. SpringBoot 非web项目简单架构

    1.截图 2.DemoService package com.github.weiwei02.springcloudtaskdemo; import org.springframework.beans ...

  10. String str = new String("abc"),这段代码一共生成了几个String对象?为什么?

    String str = new String("abc")创建了俩个对象,首先为创建一个String对象"abc",然后在调用String类的构造方法时 pu ...