国产又猛又爽又黄视频|在线观看人成视频免费|少妇高潮太爽了在线视频|911国产免费无码专区|特黄做受又大又粗又长大片|欧美一级二级免费在线观看|日日夜人人澡人人澡人人看免|欧洲午夜精品一级毛片在线播放

thinkphp6數據庫查詢(xún)數組批量表達式條件調整問(wèn)題

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

thinkphp框架的Db類(lèi)支持數組批量查詢(xún),如通過(guò)兩個(gè)字段來(lái)查詢(xún)(status和catid),我們可以這樣寫(xiě)查詢(xún)語(yǔ)句:

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

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

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

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

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

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

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

但在thinkphp6中使用上述寫(xiě)法最終生成的sql語(yǔ)句是:

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

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

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

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

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

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

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

我們在微信上24小時(shí)期待你的聲音

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

轉載請注明出處:thinkphp6數據庫查詢(xún)數組批量表達式條件調整問(wèn)題 - 微構網(wǎng)絡(luò )
分享:
南康市| 长宁区| 新田县| 赤水市| 宜都市| 乌兰察布市| 赞皇县| 盈江县| 闽侯县| 手机| 西峡县| 屏东市| 莒南县| 武威市| 通城县| 富民县| 海淀区| 惠安县| 兴化市| 襄樊市| 兴国县| 吉林市| 蒙城县| 上饶县| 满洲里市| 阳城县| 锦州市| 玉屏| 得荣县| 凤凰县| 广灵县| 宁远县| 元江| 牙克石市| 湘乡市| 奇台县| 灵川县| 平安县| 游戏| 山丹县| 洛南县|