佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > tp5.1框架數(shù)據(jù)庫子查詢操作實例分析

tp5.1框架數(shù)據(jù)庫子查詢操作實例分析

熱門標(biāo)簽:電子圍欄 Mysql連接數(shù)設(shè)置 銀行業(yè)務(wù) 團購網(wǎng)站 科大訊飛語音識別系統(tǒng) 服務(wù)器配置 Linux服務(wù)器 阿里云

本文實例講述了tp5.1框架數(shù)據(jù)庫子查詢操作。分享給大家供大家參考,具體如下:

首先構(gòu)造子查詢SQL,可以使用下面三種的方式來構(gòu)建子查詢。

使用fetchSql方法

fetchSql方法表示不進行查詢而只是返回構(gòu)建的SQL語句,并且不僅僅支持select,而是支持所有的CURD查詢。

$subQuery = Db::table('think_user')
 ->field('id,name')
 ->where('id', '>', 10)
 ->fetchSql(true)
 ->select();

生成的subQuery結(jié)果為:

SELECT `id`,`name` FROM `think_user` WHERE `id` > 10 

使用buildSql構(gòu)造子查詢

$subQuery = Db::table('think_user')
 ->field('id,name')
 ->where('id', '>', 10)
 ->buildSql();

生成的subQuery結(jié)果為:

( SELECT `id`,`name` FROM `think_user` WHERE `id` > 10 )

調(diào)用buildSql方法后不會進行實際的查詢操作,而只是生成該次查詢的SQL語句(為了避免混淆,會在SQL兩邊加上括號),然后我們直接在后續(xù)的查詢中直接調(diào)用。

然后使用子查詢構(gòu)造新的查詢:

Db::table($subQuery . ' a')
 ->where('a.name', 'like', 'thinkphp')
 ->order('id', 'desc')
 ->select();

生成的SQL語句為:

SELECT * FROM ( 
 SELECT `id`,`name` FROM `think_user` WHERE `id` > 10 ) a 
WHERE 
 a.name LIKE 'thinkphp' 
ORDER BY 
 `id` 
desc

使用閉包構(gòu)造子查詢

IN/NOT INEXISTS/NOT EXISTS之類的查詢可以直接使用閉包作為子查詢,例如:

Db::table('think_user')
 ->where('id', 'IN', function ($query) {
  $query->table('think_profile')->where('status', 1)->field('id');
 })
 ->select();

生成的SQL語句是

SELECT * FROM `think_user` 
WHERE `id` IN ( SELECT `id` FROM `think_profile` WHERE `status` = 1 )
Db::table('think_user')
 ->whereExists(function ($query) {
  $query->table('think_profile')->where('status', 1);
 })->find();

生成的SQL語句為

SELECT * FROM `think_user` 
WHERE EXISTS ( SELECT * FROM `think_profile` WHERE `status` = 1 ) 

更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。

希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • PHP tp5中使用原生sql查詢代碼實例
  • tp5.1 框架數(shù)據(jù)庫-數(shù)據(jù)集操作實例分析
  • tp5.1 框架路由操作-URL生成實例分析
  • tp5.1 框架join方法用法實例分析
  • tp5.1 框架數(shù)據(jù)庫常見操作詳解【添加、刪除、更新、查詢】
  • TP5多入口設(shè)置實例講解

標(biāo)簽:蚌埠 江蘇 衢州 大理 衡水 萍鄉(xiāng) 棗莊 廣元

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《tp5.1框架數(shù)據(jù)庫子查詢操作實例分析》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    崇阳县| 瓦房店市| 红桥区| 集贤县| 方城县| 肥城市| 临朐县| 股票| 宁陕县| 古田县| 望城县| 龙江县| 玛沁县| 封丘县| 惠水县| 邢台县| 南宁市| 都安| 南京市| 奈曼旗| 额济纳旗| 汕头市| 梁平县| 通山县| 龙泉市| 普陀区| 合肥市| 连云港市| 崇仁县| 香河县| 仲巴县| 眉山市| 海伦市| 广西| 康平县| 东兰县| 星子县| 荣昌县| 边坝县| 滦南县| 石城县|