热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Thinkphp笔记查询方式

对于统计字段,系统还提供了更加方便的setInc和setDec方法。eg:$UserM(User);实例化User对象$User-where(id5)-set
  • 对于统计字段,系统还提供了更加方便的setInc和setDec方法。eg:
  $User = M("User"); // 实例化User对象
    $User->where('id=5')->setInc('score',3); // 用户的积分加3
    $User->where('id=5')->setInc('score'); // 用户的积分加1
    $User->where('id=5')->setDec('score',5); // 用户的积分减5
    $User->where('id=5')->setDec('score'); // 用户的积分减1

查询方式

一、使用字符串作为查询条件,这是最传统的方式,但是安全性不高,例如:

$User = M("User"); // 实例化User对象
$User->where('type=1 AND status=1')->select();
最后生成的SQL语句是
SELECT * FROM think_user WHERE type=1 AND status=1

二、使用数组作为查询条件,eg:
$User = M("User");
$condition['name'] = 'thinkphp';
$condition['status'] =1;
$User->where($condition)->select();
最后生成的SQL语句:
Select* from think_user where 'name'='thinkphp' AND 'status' =1

如果进行多字段查询,那么字段之间的默认逻辑关系是逻辑与 AND ,可以使用下面的规则进行修改,
$condition['_logic'] = 'OR';

三、使用对象方式来查询
这是以stdClass内置对象为例:
$User = M("User");
$condition->name = 'thinkphp';
$condition->status =1 ;
$User->where($condition)->select();


表达式查询

ThinkPHP查询语言的精髓,查询表达式的使用格式:
$map['字段名'] = array('表达式','查询条件');
表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:
表达式含义
EQ等于(=)
NEQ不等于&#xff08;<>&#xff09;
GT大于&#xff08;>&#xff09;
EGT大于等于&#xff08;>&#61;&#xff09;
LT小于&#xff08;<&#xff09;
ELT小于等于&#xff08;<&#61;&#xff09;
LIKE模糊查询
[NOT] BETWEEN&#xff08;不在&#xff09;区间查询
[NOT] IN&#xff08;不在&#xff09;IN 查询
EXP表达式查询&#xff0c;支持SQL语法

示例 :
$map[&#39;id&#39;] &#61; array(&#39;eq&#39;,100);
等效于&#xff1a;
$map[&#39;id&#39;] &#61; 100;

[NOT] LIKE: 同SQL的like :

$map[&#39;name&#39;] &#61; array(&#39;like&#39;,&#39;thinkphp%&#39;);   //注意%的使用

如果配置了DB_LIKE_FIELDS参数的话&#xff0c;某些字段也会自动进行模糊查询。
例如&#xff1a;
&#39;DB_LIKE_FIDLDS&#39;&#61;>&#39;title|content&#39;
$map[&#39;title&#39;] &#61; &#39;thinkphp&#39;   就变成  title like &#39;%thinkphp%&#39;
支持数组方式:

$map[&#39;a&#39;] &#61; array(&#39;like&#39;, array(&#39;thinkphp%&#39;,&#39;tp%&#39;),&#39;OR&#39;);

$map[&#39;b&#39;] &#61; array(&#39;notlike&#39;,array(&#39;thinkphp%&#39;,&#39;tp%&#39;),&#39;AND&#39;);

生成的查询条件:
(a like &#39;thinkphp%&#39; OR a like &#39;tp%&#39;) AND (b notlike &#39;thinkphp%&#39; AND b notlike &#39;tp%&#39;);

[NOT]BETWEEN: 同sql的between,条件查询支持字符串或者数组,例如:

$map[&#39;id&#39;] &#61; array(&#39;between&#39;,&#39;1,8&#39;);
和下面的等效:
$map[&#39;id&#39;] &#61; array(&#39;between&#39;,array(&#39;1&#39;,&#39;8&#39;));
查询条件就变成了id BETWEEN 1 AND 8

EXP: 表达式,支持复杂的查询情况

$map[&#39;id&#39;] &#61; array (&#39;in&#39;,&#39;1,3,8&#39;);
可以改成:
$map[&#39;id&#39;] &#61; array(&#39;exp&#39;, &#39;in(1,3,8)&#39;);
exp查询的条件不会被 当成 字符串,所以后面的查询条件 可以使用任何SQL支持的语法,包括使用函数和字段名称.查询表达式用于查询条件 ,也可以用于数据更新&#xff1a;
​$User &#61; M("User");
$data[&#39;name&#39;] &#61; &#39;thinkphp&#39;;
$data[&#39;score&#39;]  &#61; array(&#39;exp&#39;,&#39;score&#43;1&#39;);
$User->where(&#39;id&#61;5&#39;)->save($data);





来自为知笔记(Wiz)



转:https://www.cnblogs.com/fansino/p/3594308.html



推荐阅读
author-avatar
狠心狼fd
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有