【小(xiǎo)編推薦】ThinkPHP3.2——₹¶組合查詢

2014-06-26   | &nb ‍sp; 發布者:梁國(guó)芳&n∑>bsp;  | &π★'nbsp; 查看(kàn):3320次

Thinkphp

組合查詢的(de)主體(tǐ)還(hái)是(shìα♦)采用(yòng)數(shù)組方式查詢,隻是(sσ₹↔hì)加入了(le)一(yī)些(xiē)特殊的(de)查詢支持,包括字符串模☆♥λ®式查詢(_string)、複合查詢(_complex)、請(qǐng)求字符串查詢(_query),混合查詢中的(de)特殊查詢每次查詢隻能(néng)•☆₹定義一(yī)個(gè),由于采用(yòng)數(shù)組'±的(de)索引方式,索引相(xiàng)同的(de)特殊查詢會(huì)λ×被覆蓋。

一(yī)、字符串模式查詢

數(shù)組條件(jiàn)可(kě)以和(hé)字✘≤©符串條件(jiàn)(采用(yòng)_string 作(zuò€$™)為(wèi)查詢條件(jiàn))混合使用(yòng),例如(™¶rú):

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. $map['id'] = array('neq',1);
  3. $map['name'] = 'ok';
  4. $map['_string'] = 'status=1 AND score>10☆×';
  5. $User->where($map)->select();

最後得(de)到(dào)的(de)查詢條件(jiàn)就(‌ jiù)成了(le):

  1. ( `id` != 1 ) AND ( `name` = 'ok' ) AND ( status=1 AND score>10 )

二、請(qǐng)求字符串查詢方式

請(qǐng)求字符串查詢是(shì)一(yī)種類似于URL傳參的(de)方≈€式,可(kě)以支持簡單的(de)條件(jiàn)↔¶相(xiàng)等判斷。

  1. $map['id'] = array('gt','100');
  2. $map['_query'] = 'status=1&score=10✔↓0&_logic=or';

得(de)到(dào)的(de)查詢條件(jiàn)是(sφ&✔hì):

  1. `id`>100 AND (`status` = '1' OR `score` = '100')

三、複合查詢

複合查詢相(xiàng)當于封裝了(le)一(yī)個(gèΩ✘≥×)新的(de)查詢條件(jiàn),然後并入原來(™™πlái)的(de)查詢條件(jiàn)之中,所以可(kě)以€©‌完成比較複雜(zá)的(de)查詢條件(jiàn)組裝。 φ↕♥"例如(rú):

  1. $where['name'] = array('like', '%thinkphp%');
  2. $where['title'] = array('like','%thinkphp%');
  3. $where['_logic'] = 'or';
  4. $map['_complex'] = $where;
  5. $map['id'] = array('gt',1);

查詢條件(jiàn)是(shì)

  1. ( id > 1) AND ( ( name like '%thinkphp%') OR ( title like '%thinkphp%') )

複合查詢使用(yòng)了(le)_complex作(zuò)為(wè¶↑↔©i)子(zǐ)查詢條件(jiàn)來(lái)定義,配合之€$α前的(de)查詢方式,可(kě)以非常靈活的(de)制(zhì)定更加複雜★♦λ✔(zá)的(de)查詢條件(jiàn)。 很(hěn•≠ )多(duō)查詢方式可(kě)以相(xi∞‍àng)互轉換,例如(rú)上(shàng✘±±)面的(de)查詢條件(jiàn)可(kě)以改成:

  1. $where['id'] = array('gt',1);
  2. $where['_string'] = ' (name like "%thinkphp%&q✔∏≠↕uot;) OR ( title like "%thinπ★'kphp") ';

最後生(shēng)成的(de)SQL語★✔♣句是(shì)一(yī)緻的(de)。