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`='市場部';


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM