溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在thinkPHP中使用表達式查詢

發(fā)布時間:2021-04-02 16:58:27 來源:億速云 閱讀:126 作者:Leah 欄目:開發(fā)技術(shù)

怎么在thinkPHP中使用表達式查詢?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

Where 條件中使用表達式

Where 條件表達式格式為:

$map['字段名']  = array('表達式', '操作條件');

其中 $map 是一個普通的數(shù)組變量,可以根據(jù)自己需求而命名。上述格式中的表達式實際是運算符的意義:

ThinkPHP運算符 與 SQL運算符 對照表
TP運算符SQL運算符例子實際查詢條件
eq=$map['id'] = array('eq',100);等效于:$map['id'] = 100;
neq!=$map['id'] = array('neq',100);id != 100
gt>$map['id'] = array('gt',100);id > 100
egt>=$map['id'] = array('egt',100);id >= 100
lt<$map['id'] = array('lt',100);id < 100
elt<=$map['id'] = array('elt',100);id <= 100
likelike$map['username'] = array('like','Admin%');username like 'Admin%'
betweenbetween and$map['id'] = array('between','1,8');id BETWEEN 1 AND 8
not betweennot between and$map['id'] = array('not between','1,8');id NOT BETWEEN 1 AND 8
inin$map['id'] = array('in','1,5,8');id in(1,5,8)
not innot in$map['id'] = array('not in','1,5,8');id not in(1,5,8)
and(默認)and$map['id'] = array(array('gt',1),array('lt',10));(id > 1) AND (id < 10)
oror$map['id'] = array(array('gt',3),array('lt',10), 'or');(id > 3) OR (id < 10)
xor(異或)xor兩個輸入中只有一個是true時,結(jié)果為true,否則為false,例子略。1 xor 1 = 0
exp綜合表達式$map['id'] = array('exp','in(1,3,8)');$map['id'] = array('in','1,3,8');


補充說明

同 SQL 一樣,ThinkPHP運算符不區(qū)分大小寫,eq 與 EQ 一樣。

between、 in 條件支持字符串或者數(shù)組,即下面兩種寫法是等效的:

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

exp 表達式

上表中的 exp 不是一個運算符,而是一個綜合表達式以支持更復雜的條件設置。exp 的操作條件不會被當成字符串,可以使用任何 SQL 支持的語法,包括使用函數(shù)和字段名稱。

exp 不僅用于 where 條件,也可以用于數(shù)據(jù)更新,如:

$Dao = M("Article");
// 構(gòu)建 save 的數(shù)據(jù)數(shù)組,文章點擊數(shù)+1
$data['aid'] = 10;
$data['counter'] = array('exp','counter+1');
// 根據(jù)條件保存修改的數(shù)據(jù)
$User->save($data);

看完上述內(nèi)容,你們掌握怎么在thinkPHP中使用表達式查詢的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI