thinkPHP5.0数据查询表达式生成技巧

thinkPHP的查询表达式大揭秘

主要使用where(条件表达式)方法

语法一:where('字段','条件','值');

等于:EQ 解析为"="

不等于:NEQ 解析为"<>"

小于:LT 解析为"<"

小于等于: ELT 解析为"<="

大于:GT 解析为">"

大于等于:EGT 解析为">="

区间:BETWEEN 解析为 “BETWEEN * AND *”

不在区间:NOTBETWEEN 解析为 “NOTBETWEEN * AND *”

集合:IN 解析为 IN(*,*);

不在集合 : NOT IN 解析为 NOT IN(*,*)

字段值为NULL 和 NOT NULL  

//条件省略,默认为相等

$res=Db::table('data')->where('id',11) //等价于:where('id','=',11)

           ->fetchSql(true) //输出SQL语句,

           ->select();

//完整的单值条件表达式

$res=Db::table('data')->where('id','EGT',11)  //等价于: where('id','>=',11)

          ->fetchSql(true)

          ->select();

//区间条件表达式

$res=Db::table('data')->where('age','BETWEEN',[18,35]) //between 18 and 35

          ->where('age','NOT BETWEEN',[18,35]) //not between 18 and 35

          ->fetchSql(true)

          ->select();

//集合条件表达式

$res=Db::table('data')->where('id','IN',[2,3,4])  //in(2,3,4)

          ->where('id','NOT IN',[2,3,5]) //not in(2,3,5)

          ->fetchSql(true)

          ->select();

//null值判断,注意中间有“=”号的区别

$res=Db::table('Data')->where('node_name','NULL')  //找出该字段默认设置为NULL的数据

          ->where('node_name','=','NULL')  //找出改字段等于NULL字符串的数据

          ->fetchSql(true) //打印SQL

          ->select();

//like 或者 not like

$res=Db::table('Data')->where('name','LIKE','%php')  //模糊匹配以php结尾的字段

            ->where('name','NOT LIKE','%php')

          ->where('node_name','=','NULL') //node_name的值为NULL

          ->fetchSql(true)

          ->select();

每个数组元素都是一个查询条件,使用where()方法时,每个条件之间为AND关系,使用whereOr()方法为or

//AND

$res=Db::table('Data')->where([
'id'=>['>',11],
'typeid'=>['BETWEEN',[13,20]]
])
->fetchSql(true)
->select();
//SQL :select * from `Data` where `id` >11 AND `typeid`  BETWEEN 18 AND 20;
 
//OR
$res=Db::table('Data')->whereOr([
  'id'=>['EGT',11],
  'age'=>['BETWEEN',[17,20]]
])
->fetchSql(true)
->select();
//SQL:select * from `Data` where `id` >=11 OR `age` BETWEEN 17 AND 20
 
//简单条件
$res=Db::table('Data')->where('id','EXP','>=10')
          ->select();
SQL : select * from `Data` where (`id`>=10)
//复合条件
$res=Db::table('Data')->where('age','EXP','BETWEEN 20 AND 30')
          ->where();
SQL: select * from `Data` where (`age` BETWEEN 20 AND 30);
 
$res=Db::table('Data')->where('id','EXP','>=10')
          ->where('age','>',30)
          ->whereOr('dept','市场部')
          ->select();
select * from `Data` where(`id`>=10) AND `age`>30 OR `dept`='市场部';
原文地址:https://www.cnblogs.com/ymdphp/p/10951469.html