【小(xiǎo)編推薦】ThinkPHP3.2——表達式查詢'₽

2014-06-26   |&n∞≤↕bsp;  發布者:梁國(guó)芳 &≥∏≥nbsp; |   查Ω₹看(kàn):3320次

Thinkphp

上(shàng)面的(de)查詢條件(jiàn)僅僅是∑↓↔§(shì)一(yī)個(gè)簡單的(de)相(xiàng)等 ↓÷判斷,可(kě)以使用(yòng)查詢表♥∏達式支持更多(duō)的(de)SQL查詢語法,也(yě)是(sh≥∑←ì)ThinkPHP查詢語言的(de)精髓,查詢表達式的(de)使用(y$$δòng)格式:

$map['字段名'] = array('表‌εγε達式','查詢條件(jiàn)');

表達式不(bù)分(fēn)大(dà)小(xiǎoλ↕₽δ)寫,支持的(de)查詢表達式有(yǒu)下(xià)面♣‌>€幾種,分(fēn)别表示的(de)含義是(shì):

表達式 含義 協助記憶
EQ 等于(=) equal
NEQ 不(bù)等于(<>) not equal
GT 大(dà)于(>) greater
EGT 大(dà)于等于(>=) equal or greater
LT 小(xiǎo)于(<) less than
ELT 小(xiǎo)于等于(<=) equal or less than
LIKE 模糊查詢  
[NOT] BETWEEN (不(bù)在)區(qū)間(jiān)查詢  
[NOT] IN (不(bù)在)IN 查詢  
EXP 表達式查詢,支持SQL語法 expression

表達式查詢的(de)用(yòng)法示例如(rú)下(≥π₽xià):

EQ :等于(=)

例如(rú):

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

和(hé)下(xià)面的(de)查詢等效

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

表示的(de)查詢條件(jiàn)就(jiù)是(shì) id = 100

NEQ: 不(bù)等于(<>)

例如(rú):

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

表示的(de)查詢條件(jiàn)就(j¥≠∞iù)是(shì) id <> 100

GT:大(dà)于(>)

例如(rú):

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

表示的(de)查詢條件(jiàn)就(jiù)是(≥​§shì) id > 100

EGT:大(dà)于等于(>=)

例如(rú):

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

表示的(de)查詢條件(jiàn)就(jiù)是(shì) id >= 100

LT:小(xiǎo)于(<)

例如(rú):

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

表示的(de)查詢條件(jiàn)就(jiù)是(shì)'¥₩↔ id < 100

ELT: 小(xiǎo)于等于(<=)

例如(rú):

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

表示的(de)查詢條件(jiàn)就(jiù)是(σ♦® shì) id <= 100

[NOT] LIKE: 同sql的(de)LIKE

例如(rú):

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

查詢條件(jiàn)就(jiù)變成 name like 'thinkphp%' 如(rú)果配置了(le)DB_LIKE_FIEL≈≈™♥DS參數(shù)的(de)話(huà),某些 ¥£(xiē)字段也(yě)會(huì)自(zì)動§' 進行(xíng)模糊查詢。例如(rú)設置了(δ©le):

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

的(de)話(huà),使用(yòng)∞•↓

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

查詢條件(jiàn)就(jiù)會(huì)變成 title like '%thinkphp%' 支持數(shù)組方式,例如(rú)

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

生(shēng)成的(de)查詢條件(jiàn)就(jiù)是(shì≠♠§):

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

[NOT] BETWEEN :同sql的(de)[not] bet✘↔ween

查詢條件(jiàn)支持字符串或者數(shù)組,例如>÷(rú):

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

和(hé)下(xià)面的(de)等效:

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

查詢條件(jiàn)就(jiù)變成 id BETWEEN 1 AND 8

[NOT] IN: 同sql的(de)[not] in

查詢條件(jiàn)支持字符串或者數(shù)組,例如(rú):

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

和(hé)下(xià)面的(de)等效:

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

查詢條件(jiàn)就(jiù)變成 id NOT IN (1,5, 8)

EXP:表達式

支持更複雜(zá)的(de)查詢情況 例如(rú):

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

可(kě)以改成:

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

exp查詢的(de)條件(jiàn)不(bù)會(huì)被當成​σ☆α字符串,所以後面的(de)查詢條件(jiàn)可(kě)以使用(yònδγ≥g)任何SQL支持的(de)語法,包括使用(yòng≥↓ )函數(shù)和(hé)字段名稱。查詢表達式不♥↕™<(bù)僅可(kě)用(yòng)于查詢條件(jiàn),也(y★¶ě)可(kě)以用(yòng)于數(shù)據更新,例如(rú):

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 要(yào)修改的(de)數(shù)據對(duφ♠♥¶ì)象屬性賦值
  3. $data['name'] = 'ThinkPHP';
  4. $data['score'] = array('exp','score+1');// 用(yòng)戶的(de)積分(fēn)加1
  5. $User->where('id=5')->save($data); // 根據條件(jiàn)保存修改的(de)數(shù★σ)據