組合查詢的(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ú):
$User = M("User"); // 實例化(huà)User對(duì)象$map['id'] = array('neq',1);$map['name'] = 'ok';$map['_string'] = 'status=1 AND score>10☆×';$User->where($map)->select();
最後得(de)到(dào)的(de)查詢條件(jiàn)就( jiù)成了(le):
( `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)等判斷。
$map['id'] = array('gt','100');$map['_query'] = 'status=1&score=10✔↓0&_logic=or';
得(de)到(dào)的(de)查詢條件(jiàn)是(sφ&✔hì):
`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ú):
$where['name'] = array('like', '%thinkphp%');$where['title'] = array('like','%thinkphp%');$where['_logic'] = 'or';$map['_complex'] = $where;$map['id'] = array('gt',1);
查詢條件(jiàn)是(shì)
( 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ě)以改成:
$where['id'] = array('gt',1);$where['_string'] = ' (name like "%thinkphp%&q✔∏≠↕uot;) OR ( title like "%thinπ★'kphp") ';
最後生(shēng)成的(de)SQL語★✔♣句是(shì)一(yī)緻的(de)。




