tp5.1框架數(shù)據(jù)庫子查詢操作實例分析
本文實例講述了tp5.1框架數(shù)據(jù)庫子查詢操作。分享給大家供大家參考,具體如下:
首先構造子查詢SQL,可以使用下面三種的方式來構建子查詢。
使用fetchSql方法
fetchSql方法表示不進行查詢而只是返回構建的SQL語句,并且不僅僅支持select
,而是支持所有的CURD查詢。
$subQuery = Db::table('think_user') ->field('id,name') ->where('id', '>', 10) ->fetchSql(true) ->select();
生成的subQuery結果為:
SELECT `id`,`name` FROM `think_user` WHERE `id` > 10
使用buildSql構造子查詢
$subQuery = Db::table('think_user') ->field('id,name') ->where('id', '>', 10) ->buildSql();
生成的subQuery結果為:
( SELECT `id`,`name` FROM `think_user` WHERE `id` > 10 )
調用buildSql方法后不會進行實際的查詢操作,而只是生成該次查詢的SQL語句(為了避免混淆,會在SQL兩邊加上括號),然后我們直接在后續(xù)的查詢中直接調用。
然后使用子查詢構造新的查詢:
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
使用閉包構造子查詢
IN/NOT IN
和EXISTS/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 )
更多關于thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術總結》。
希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。
相關文章
Laravel實現(xiàn)數(shù)據(jù)庫遷移與支持中文的填充
最近在學習Laravel數(shù)據(jù)庫方面的內容,發(fā)現(xiàn)了一些資料不錯整理出來分享給大家,下面這篇文章主要給大家介紹了關于Laravel實現(xiàn)數(shù)據(jù)庫遷移與支持中文填充的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。2017-11-11Yii2.0框架模型添加/修改/刪除數(shù)據(jù)操作示例
這篇文章主要介紹了Yii2.0框架模型添加/修改/刪除數(shù)據(jù)操作,結合實例形式分析了Yii2.0使用模型操作數(shù)據(jù)的添加、修改、刪除相關實現(xiàn)技巧,需要的朋友可以參考下2019-07-07使用composer命令加載vendor中的第三方類庫 的方法
這篇文章主要介紹了使用composer命令加載vendor中的第三方類庫的方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07Zend Framework教程之請求對象的封裝Zend_Controller_Request實例詳解
這篇文章主要介紹了Zend Framework教程之請求對象的封裝Zend_Controller_Request用法,結合實例形式詳細分析了請求對象封裝的原理,使用方法與相關注意事項,需要的朋友可以參考下2016-03-03PHP實現(xiàn)簡單網(wǎng)站訪客統(tǒng)計的方法實例
這篇文章主要給大家介紹了關于PHP實現(xiàn)簡單網(wǎng)站訪客統(tǒng)計的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01