zoukankan      html  css  js  c++  java
  • Thinkphp笔记---查询方式

    • 对于统计字段,系统还提供了更加方便的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不等于(<>)
            GT大于(>)
            EGT大于等于(>=)
            LT小于(<)
            ELT小于等于(<=)
            LIKE模糊查询
            [NOT] BETWEEN(不在)区间查询
            [NOT] IN(不在)IN 查询
            EXP表达式查询,支持SQL语法

            示例 :
            $map['id'] = array('eq',100);
            等效于:
            $map['id'] = 100;

            [NOT] LIKE: 同SQL的like :

            $map['name'] = array('like','thinkphp%');   //注意%的使用

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

            $map['a'] = array('like', array('thinkphp%','tp%'),'OR');

            $map['b'] = array('notlike',array('thinkphp%','tp%'),'AND');

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

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

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

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

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







          • 相关阅读:
            js全选,全不选,反选练习
            linux查看系统的一些命令,留着用
            JAVA中native方法
            应该被记住的 8 位 Java 人物
            iframe里面的iframe无法左右对齐的解决方法
            sql语句,查找合并后的结果
            地址路径过深时的处理方式
            惠普中国CEO孙振耀退休感言
            js获得readOnly属性
            直接加载错误页面void com.opensymphony.xwork2.ActionSupport.addActionError(String anErrorMessage)
          • 原文地址:https://www.cnblogs.com/fansino/p/3594308.html
          Copyright © 2011-2022 走看看