2024国产成人精品免费视频|日本免费一区二区三区毛片|久久97超碰色中文字幕|亚洲天堂a中文字幕

thinkphp6數(shù)據(jù)庫查詢數(shù)組批量表達(dá)式條件調(diào)整問題

2022-07-12 10:59 欄目:技術(shù)開發(fā) 查看(11136)

thinkphp框架的Db類支持?jǐn)?shù)組批量查詢,如通過兩個(gè)字段來查詢(status和catid),我們可以這樣寫查詢語句:

$map['status'] = 1;
$map['catid'] = 1;
Db::name('posts')->where($map)->select();

最終生成的sql語句是(假設(shè)數(shù)據(jù)表前綴為jp_,下同):

SELECT * FROM `jp_posts` WHERE `status` = 1 AND `catid`=1

這在thinkphp5和tinkphp6中中的效果是一樣的,除了相當(dāng)之外,還可以支持其他的表達(dá)式,比如查詢status=1,標(biāo)題符合關(guān)鍵詞模糊查詢的數(shù)據(jù)。

$map['status'] = 1;
$map['title'] = ['like','%關(guān)鍵詞%'];
Db::name('posts')->where($map)->select();

在thinkphp5中可以得到我們預(yù)期所需要的sql語句:

SELECT * FROM `jp_posts` WHERE `status` = 1 AND `title` LIKE '%關(guān)鍵詞%'

但在thinkphp6中使用上述寫法最終生成的sql語句是:

SELECT * FROM `jp_posts` WHERE? `status` = 1? AND `title` IN ('like','%關(guān)鍵詞%')

很顯然跟我們預(yù)期所需要的sql語句是不一樣的,原因在于新的tinkphp6在進(jìn)行組裝原始sql語句的時(shí)候有所調(diào)整,如果是原來其他表達(dá)式的一律當(dāng)做IN子句來處理。在thinkphp6中如果需要使用其他表達(dá)式組合查詢,應(yīng)該使用如下這樣的語法:

$map[] = ['status','=',1];
$map[] = ['title','like','%關(guān)鍵詞%']; 
Db::name('posts')->where($map)->select();

這樣就可以生成我們預(yù)期所需要的sql語句了:

SELECT * FROM `jp_posts` WHERE `status` = 1 AND `title` LIKE '%關(guān)鍵詞%'

筆者個(gè)人還是比較習(xí)慣使用上面map[key]這種形式的寫法,你覺得哪種寫法更適合呢?

與我們的項(xiàng)目經(jīng)理聯(lián)系
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請(qǐng)注明出處:thinkphp6數(shù)據(jù)庫查詢數(shù)組批量表達(dá)式條件調(diào)整問題 - 微構(gòu)網(wǎng)絡(luò)
分享:
合江县| 诏安县| 镇平县| 白朗县| 福安市| 涞源县| 神木县| 岳阳县| 鹤庆县| 叙永县| 从江县| 什邡市| 平邑县| 察隅县| 虹口区| 靖边县| 惠东县| 五华县| 松溪县| 广水市| 祁门县| 香格里拉县| 保德县| 梁河县| 阿鲁科尔沁旗| 汉寿县| 项城市| 武强县| 铜川市| 行唐县| 垦利县| 长沙市| 淄博市| 长汀县| 张掖市| 绥芬河市| 浪卡子县| 邛崃市| 丽江市| 运城市| 高碑店市|